Intelligent Downloading and Rendering of Content

In one embodiment, download a hierarchy of objects from one or more first electronic devices to a second electronic device for presentation to a user of the second electronic device. The objects are presented to the user of the second electronic device according to a structure of the hierarchy. The objects are downloaded to the second electronic device in an order determined based on which specific objects in the hierarchy are currently presented to the user of the second electronic device.

Skip to: Description  ·  Claims  · Patent History  ·  Patent History
Description
RELATED APPLICATION(S)

This application claims the benefit, under 35 U.S.C. §119(e), of U.S. Provisional Patent Application No. 61/593841, filed 1 Feb. 2012, which is incorporated herein by reference.

TECHNICAL FIELD

This disclosure generally relates to downloading to and rendering on electronic devices user-consumable content.

BACKGROUND

Often, computing or electronic devices connected to computer or communication networks, whether through wired or wireless connections, may transmit data to one another over the networks. Typically, for a specific data transmission, there is a sending device and a receiving device, where the data are transmitted from the sending device to the receiving device. Depending on which device has initiated the data transmission, the data may be pushed or pulled from the sending device to the receiving device. In the “push” case, it is the sending device that has initiated the data transmission. On the other hand, in the “pull” case, it is the receiving device that has initiated the data transmission (e.g., by requesting the data from the sending device).

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example system for transmitting data from a first device to a second device.

FIG. 2 illustrates a portion of an example object hierarchy.

FIG. 3 illustrates an example method for downloading a hierarchy of objects.

FIG. 4 illustrates an example method for downloading a hierarchy of objects.

FIG. 5 illustrates an example visual indicator that shows the current status of downloading a hierarchy of objects.

FIG. 6 illustrates an example of downloading a specific version of an object to a device.

FIG. 7 illustrates an example electronic device.

DESCRIPTION OF EXAMPLE EMBODIMENTS

In particular embodiments, data may be transmitted from a first device (e.g., a data-sending device) to a second device (e.g., a data-receiving device) over computer or communication networks. Often, the process of transmitting data from a sending device to a receiving device may be referred to as “downloading” the data from the sending device to the receiving device. The sending and receiving devices may be connected to the networks through wired or wireless connections. In particular embodiments, the data may represent user-consumable content (e.g., texts, images, videos, audios, etc.). The content may be rendered on the data-sending device and presented to a user of the device.

There are many types of electronic devices that may be used to render content for user consumption. These devices have different hardware configurations, resources, operating systems, and capabilities. In particular embodiments, for a piece of user-consumable content, there may be multiple versions of that specific piece of content suitable for different types of electronic devices. Different versions of a piece of content may be downloaded to different types of electronic devices for user consumption.

In particular embodiments, user-consumable content may be organized into a hierarchy of objects, where each object in the hierarchy corresponds to a specific piece of user-consumable content. The objects may be downloaded to an electronic device in an order determined based on their respective positions in the hierarchy or based on what objects are currently being consumed or likely to be consumed in the near future by a user of the device. In addition, the structure of the hierarchy, or more specifically, the positions of the objects within the hierarchy, indicate relationships among the objects in the hierarchy. In particular embodiments, transmitting data representing a hierarchy of objects to an electronic device includes transmitting both the data representing the objects themselves and the data representing the hierarchical structure (e.g., data representing the positions of the objects within the hierarchy or the relationships among the objects) to the electronic device.

In particular embodiments, when presenting a hierarchy of objects to a user for consumption, the objects are organized and presented according to the structure of the hierarchy. The objects may be presented in a user interface (UI) provided on the electronic device. When doing so, the objects are organized and presented in the UI according to the hierarchical structure so that the UI itself becomes hierarchical as well. Consequently, the UI may include a number of layers, respectively corresponding to the levels in the hierarchy. The positions of the objects within the hierarchy are preserved in the UI, such that a specific object at a specific level in the hierarchy is presented in the corresponding layer of the UI. The relationships among the objects within the hierarchy are maintained in the UI. In particular embodiments, on an electronic device, the downloaded objects may be rendered for user consumption based on what objects are currently being consumed or likely to be consumed in the near future by a user of the device.

In particular embodiments, there may be any number of computing or electronic devices connected to computer or communication networks through wired or wireless network connections. These devices may transmit data to one another over the networks using any suitable network or communication protocols. As an example, FIG. 1 illustrates a system for transmitting data between two devices (e.g., from a first device to a second device). To simplify the discussion, two devices 110A and 110B are connected to a network 120, each by a link 130.

In particular embodiments, network 120 may be an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a metropolitan area network (MAN), a portion of the Internet, another network 120, or a combination of two or more such networks 120. This disclosure contemplates any suitable network 120. In particular embodiments, a link 130 couples each device 110 to network 120. In particular embodiments, link 130 may include one or more wireline, wireless, or optical links. In particular embodiments, link 130 may include an intranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a MAN, a portion of the Internet, another link 130, or a combination of two or more such links 130. This disclosure contemplates any suitable link 130.

In particular embodiments, devices 110 may transmit data to each other over network 120. As an example, in a client-server system, device 110A may be a server and device 110B may be a client. Device 110A (e.g., the server) may transmit data to device 110B (e.g., the client). As another example, in a peer-to-peer system, devices 110A and 110B may both be peer nodes. Device 110A may transmit data to device 110B, and vice versa. Suppose that device 110A transmits data to device 110B. In this case, device 110A may be referred to as the “data-sending” device, and device 110B may be referred to as the “data-receiving” device. Data may be pushed or pulled from data-sending device 110A to data-receiving device 110B, depending on which device has actually initiated the data transmission. The process of transmitting data from data-sending device 110A to data-receiving device 110B may also be referred to as “downloading” the data from device 110A to device 110B.

In particular embodiments, the data downloaded from one device (e.g., device 110A) to another device (e.g., device 110B) may represent user-consumable content, such as, for example and without limitations, texts, images, videos, audios, executables, feeds, etc., that may be used or viewed or heard or interacted with by a user of a device. In particular embodiments, such user-consumable content may be presented to a user of a device in a suitable user interface (UI) provided on the device. In particular embodiments, the user-consumable content may be organized (e.g., based on how specific pieces of user-consumable content are related to one another) so that the content may be presented to the user in an organized or logical or user-friendly manner, as opposed to, for example, randomly. In such cases, the data downloaded from one device (e.g., device 110A) to another device (e.g., device 110B) may also represent how the individual pieces of user-consumable content are organized (e.g., their organizational structure).

One way to organize a group of objects is into a hierarchy. As an example, objects may be organized into a hierarchy based on how the individual objects are related to each other. The hierarchy may have any number of levels, and at each level, there may be any number of objects. Parent-child or sibling relationships may exist between specific objects in the hierarchy. Within the hierarchy, a parent object is one level above the level of its child objects. Two sibling objects are at the same level and share the same parent object. In addition, any portion of the hierarchy may also be considered a hierarchy in itself As an example, FIG. 2 illustrates a portion of an object hierarchy 200 that includes a number of objects 210. In particular embodiments, an object in a hierarchy may or may not have a parent. If an object does not have a parent, it may be referred to as a “root” object (e.g., object 210A). In particular embodiments, an object in a hierarchy may or may not have any children. If an object does not have any children, it may be referred to as a “leaf” object (e.g., object 210B). If an object does have children (e.g., object 210C), it may have any number of children. In addition, objects sharing the same parent may be referred to as each other's “siblings”. For example, in FIG. 2, object 210C is the parent of objects 210D and 210B. Objects 210D and 210B are the children of object 210C and are siblings to each other. Thus, a hierarchy of objects (e.g., object hierarchy 200) not only includes the individual objects themselves but also indicates the relationships among the specific objects. Moreover, the position of a specific object within the hierarchy may be used to indicate its relationships with other objects in the hierarchy.

Objects may be of any applicable types. In particular embodiments, an object may correspond to a piece of user-consumable content. In particular embodiments, an object may be consumed by a user if the user may, for example and without limitation, interact with, view, read, listen to, manipulate, or handle the object. For example, some user-consumable objects may be text blocks, images, videos, audios, feeds, executables (e.g., application programs or games), websites, web pages, digital books, photo albums, posts, or messages. In particular embodiments, user-consumable content, or more specifically, user-consumable objects, may be organized into a hierarchy based on, for example, the relationships among the individual pieces of user-consumable content or objects. Consequently, a hierarchy of user-consumable content may be represented as a hierarchy of objects, where individual objects in the hierarchy may correspond to specific pieces of user-consumable content (e.g., texts, images, videos, audios, executables, etc.). In addition, the structure of the hierarchy indicates the relationships among the specific objects.

In some cases, the relationships among the objects may correspond to how the objects are organized and presented to a user. In particular embodiments, when presenting a hierarchy of objects to a user of a device, the objects may be organized and presented according to the structure of the hierarchy. The objects may be presented in a user interface (UI) provided on the device. The objects may be organized and presented in the UI according to the structure of the hierarchy so that the UI itself becomes hierarchical as well. Consequently, the UI may include a number of layers, respectively corresponding to the levels in the hierarchy. The positions of the objects within the hierarchy are preserved in the UI, such that a specific object at a specific position in the hierarchy is presented in the corresponding position in the UI. The relationships among the objects within the hierarchy are maintained in the UI.

As an example, in the context of the desktop of a computing device, the desktop may be a parent object, and sometimes the root object of a hierarchy, whose child objects are the individual software applications available on the desktop. A software application, while itself being one of the child objects of the desktop, is also the parent object of the individual components of that software application. Different software applications may include different components. For example, for a software application that manages digital books (e.g., a book reader application), its components may include the digital books available, the individual chapters of each book, the pages of each chapter, and the texts, images, videos, audios, or any graphical user interface (GUI) or content or media elements on each page. Each of these also corresponds to an object in the hierarchy. More specifically, when these objects are organized in a hierarchy, the book application may be the parent object of the digital books. A digital book may be the parent object of the individual chapters of that book. A chapter, while itself being one of the child objects of the book, is also the parent object of the pages in that chapter. A page is the parent object of the texts, images, videos, audios, or any GUI or content or media elements on that page. A text block, image, video, audio, or GUI or content or media element is one of the child objects of the page to which it belongs. Similarly, for a software application that manages news feeds, its components may include the individual news channels and the news stories within each channel. Each of these may correspond to an object. When these objects are arranged in a hierarchy, the news-feed application, while itself being one of the child objects of the desktop, is also the parent object of the news channels. A news channel in turn is the parent object of the news stories included in that channel.

As another example, in the context of the Internet or the World Wide Web, the Internet may be a parent object whose child objects are the individual websites. A website, while itself being one of the child objects of the Internet, is also the parent object of the individual web pages of that website. A web page, while itself being one of the child objects of the website to which it belongs, is the parent object of the texts, images, videos, audios, or links (e.g., Uniform Resource Locators (URLs)) included in the web page. Each text block, image, video, audio, or link may also correspond to a specific object in the hierarchy.

As a third example, a website, such as a social-networking website, may also be arranged in such a hierarchical structure for navigating the content of the social-networking website. In this context, the social-networking website may be a parent object whose child objects are the components (e.g., photo albums, user profile pages, etc.) of the website. For example, a photo album, while itself being a child object of the social-networking website, may in turn be a parent object, and the individual photos within the album may be the child objects of the photo album. A user's profile page may be structured in such a hierarchical fashion as well. The profile page itself may be considered a parent object, and the individual objects on the profile page may be the child objects of the profile page. In particular embodiments, a profile page may be considered and rendered (e.g., for presentation to a user) as a linear timeline of objects, such as, for example and without limitation, photos, photo albums, check-ins, comments from other users, attended events, tags, etc. In particular embodiments, child objects in the hierarchy may also include applications the user has added to the profile page, such as a Spotify music sharing application. Moreover, individual stories, songs the user has listened to, and playlists may be child objects at a lower hierarchical level. In particular embodiments, child objects in the hierarchy may include particular sections of a user's profile, such as the user's education and employment information, or the public “wall” of the user's profile page. This disclosure contemplates representing and addressing any collection of content in a hierarchical object or nodal structure.

As these examples illustrate, an object may be of any type and this disclosure contemplates any applicable types of objects. For example and without limitation, the term “object” may refer to any type of content, including but not limited to images, videos, captions, text blocks or boxes, user interface elements, URLs, newsfeed stories, references to other objects, advertisements, calendar events, units for displaying open graph analysis that may be graphically rendered, applications, websites, web pages, books, chapters. In particular embodiments, given a hierarchy of objects, which may be a portion of another, larger hierarchy of objects, the hierarchical relationships (e.g., parent-child or sibling relationships, positions of the objects within the hierarchy) between specific objects may direct some aspects of how these objects behave in the context of a user interface (UI) or how the objects are presented to a user.

In particular embodiments, data representing a hierarchy of objects, including the objects themselves and the structure of the hierarchy, may be downloaded from one device (e.g., a server) to another device (e.g., a client). In particular embodiments, the individual objects in the hierarchy may be transmitted between devices based on their positions in the hierarchy (i.e., the structure of the hierarchy) and thus based on their relationships to each other. In particular embodiments, data representing a hierarchy of objects may be transmitted between two devices one level of the hierarchy at a time. That is, objects at the first level of the hierarchy are downloaded, followed by objects at the second level of the hierarchy, followed by objects at the third level of the hierarchy, and so on, until those objects at the last level of the hierarchy are downloaded. In FIG. 3, which illustrates an example method for downloading a hierarchy of objects from one device to another device, the downloading process is iterative, starting with the first level of the hierarchy and proceeding down one level at a time. During each iteration, data representing the objects at the current level of the hierarchy are downloaded (STEP 310). Then, if there are more levels left in the hierarchy (STEP 320, “YES”), the downloading process moves down to the next level (STEP 330) and another iteration is repeated, until all objects at all the levels have been downloaded.

As an example, a hierarchy of objects may represent a book. The book may include any number of sections (e.g., chapters); each section may include any number of pages; and each page may include any number of texts, images, videos, audios, etc. Based on the method illustrated in FIG. 3, the book hierarchy may be downloaded one level at a time. First, the data representing the book (e.g., the book's title, cover page, author, publication information, and table of content (TOC)) may be downloaded, followed by the data representing the individual sections (e.g., each section's title, summary, background page, and page index), following by the data representing the pages of the sections, followed by the data representing the content (e.g., texts, images, videos, audios, etc.) of the pages. When a user first opens the book, the TOC of the book, including the thumbnail versions of the pages, may be downloaded first. This allows the user to browse the entire book quickly and get an overview of the structure of the book. While the user is browsing the book on a superficial level, objects at lower levels of the hierarchy (e.g., the sections and pages) may be downloaded so that they are available when the user is ready to dive into specific sections of the book.

Alternatively or in addition, in particular embodiments, data representing a hierarchy of objects may be transmitted between two devices one section of the hierarchy at a time. That is, at a particular level, a first object is downloaded, followed by all the child objects of that first object. Then, a second object is downloaded, following by all the child objects of that second object. Then a third object is downloaded, following by all the child objects of that third object. And so on, until all the objects in the hierarchy are downloaded. In FIG. 4, which illustrates another example method for downloading a hierarchy of objects from one device to another device, the downloading process is again iterative, starting with the first object at a particular level of the hierarchy. During each iteration, data representing the current object at the current level of the hierarchy are downloaded (STEP 410). Then, if the current object has any child objects that have not been downloaded (STEP 420, “YES”), data representing those child objects are downloaded (STEP 430). If there are more objects at the current level (STEP 440, “YES”), then the downloading process moves over to the next object at the current level (STEP 450) and another iteration is repeated, until all the objects in the hierarchy are downloaded.

In particular embodiments, the two concepts illustrated in FIGS. 3 and 4 may be combined. As an example, given a hierarchy of objects, for the higher levels in the hierarchy, the objects may be downloaded one level at a time (e.g., as illustrated in FIG. 3). On the other hand, for the lower levels in the hierarchy, the objects may be downloaded one section at a time, where a parent object is downloaded, followed by downloading its child objects (e.g., as illustrated in FIG. 4). With the example where a hierarchy of objects representing a book, first, the objects at the higher levels of the hierarchy, such as those corresponding to the book and the sections in the book, may be downloaded one level at a time (e.g., first downloading the book, then downloading the sections of the book). This allows the user to browse through the entire book. For example, a digital book may include introductory content (e.g., video, slideshow, audio clip, animation, etc.). While the user is consuming (e.g., reading, viewing, or listening to) the introductory content of the book, the rest of the sections of the book may be downloaded. Then, when a user selects a specific section to read in further detail, the pages and content of each page in that section may be downloaded before the other sections, if they have not already been downloaded. This way, even if the user has selected a section in the middle or near the end of the book, the content of the user-selected section becomes available to the user quickly. The user does not need to wait for the content of all the proceeding sections in the book to be downloaded before the content of the user-selected section is downloaded. While the user is reading one section, another section (e.g., a section immediately before or after the currently user-selected section) may be downloaded. In other words, data representing objects (e.g., user-consumable content) may be downloaded incrementally and intelligently (e.g., based on what content the user is currently consuming or is likely to consume soon).

In particular embodiments, objects in a hierarchy may be downloaded to a device for user consumption based on what objects a user of the device is currently consuming (e.g., viewing, listening to, or interacting with). With the example where a hierarchy of objects representing a book, suppose that the user is currently reading Chapter 4 of the book. All the pages in Chapter 4, as well as the content included in each page, may be downloaded first. Thereafter, while the user is reading Chapter 4, the other chapters may be downloaded. For example, the pages in Chapter 5 and their content may be downloaded next, as it is likely that after Chapter 4, the user will read Chapter 5 next. The pages in Chapter 3 and their content may be downloaded sooner rather than later as well, as it is possible that the user may want to refer back to Chapter 3. In other words, those chapters in the book that are closer to the chapter the user is currently reading may be downloaded first. Then, the other chapters (e.g., chapters 10, 11, 12 . . . ) may be downloaded.

In particular embodiments, the objects may be downloaded in an order determined based on what objects are presented to the user or the user is consuming now as well as what objects are likely to be presented to the user or consumed by the user in the near future. In other words, in particular embodiments, there is an attempt to estimate or predict an order that the objects are to be presented to the user in the future (e.g., predicting in what order the user is likely to consume the objects). For example, the prediction of what content the user is likely to consumer soon may be based on the user's actions, including current actions and recently-past actions, with respect to the objects (e.g., which section of the book the user is currently reading or has just finished reading). Those objects that the user is likely to consume sooner may be downloaded first, before those object that the user is likely to consumer later, so that the user does not need to wait for the objects to be downloaded. In other words, the user's interactions with objects at specific positions within the hierarchical structure may help determines which objects are downloaded sooner and which objects are downloaded later. The objects are prioritized for downloading to the user's device. The objects that are needed sooner (e.g., the user is likely to consume these objects soon) may be downloaded first, and the objects that are needed later may be downloaded second. For example, if a user is currently viewing a parent object (e.g., a chapter's title page), the current object's child objects (e.g., the pages in the chapter) may be downloaded first.

When a user consumes objects (e.g., viewing, listening to, or interacting with the objects), the user may interact with the objects (e.g., manipulating, handling, or scrolling through the objects) through various user input means using, for example, a keyboard, a mouse, a stylus, or the user's fingers. As an example, the user may scroll through a series of objects (e.g., a series of images included in a photo album or a series of photo albums included in the user's profile page) by sliding the user's finger or fingers across a touch-sensitive display screen of the user's device. This sliding motion, which is often referred to as a “swipe”, may result in a vector representing the direction and the speed or acceleration of each sliding movement of the user's fingers.

In particular embodiments, the vector of a user's touch input (e.g., using the user's fingers or a stylus), or its derivative vector, may be utilized to ascertain whether a user wishes to browse other objects on the same hierarchical level as the current object, or the child objects of the current object. As an example, if a user is swiping through a series of photo album objects on a profile page in a social-networking website, the touch input vector may have a high velocity, or, even more tellingly, a high acceleration. Such an input may signal to the application (e.g., software implementing the social-networking website) that the user wishes to browse other photo albums, and the application may begin downloading photo album thumbnails based on the magnitude of acceleration or velocity of the input vector. As an example, if a user swipes from the ith album at a high velocity or acceleration, the application may load thumbnails for the (i+10)th album, whereas if the user swipes slowly from the ith album, the application may load thumbnails for the (i+1)th album. Conversely, if there is no velocity or acceleration to the input vector (i.e., no swiping input), the application may begin downloading the child objects (e.g., the individual photos) of the currently-viewed album cover to the user's device.

In particular embodiments, while a hierarchy of objects are being downloaded to a user's device, a visual component (e.g., displayed on the user's device) may indicate the current status of the downloading process. As an example, a progress bar 510, as illustrated in FIG. 5, may indicate the current status of downloading a chapter of a book.

Similar to prioritizing object downloading based on what objects a user may be likely to consume sooner and what objects the user may be likely to consume later, in particular embodiments, after objects have been downloaded to a user's device, they may be rendered (e.g., for presentation to the user) in an order determined based on what objects the user may be likely to consume sooner and what objects the user may be likely to consume later. Those objects that the user is likely to consume sooner are rendered first, before those the user is likely to consume later. With the example where a hierarchy of objects representing a book, the pages of the section the user is currently reading may be rendered first. In particular embodiments, a rendered object may be stored in a buffer (e.g., in cache) so that it is readily available for presentation to the user. Consequently, the user does not need to wait for objects to be rendered before the objects are presented to the user.

As another example, in the context of a digital book, content elements may be pre-drawn and loaded into a buffer based on where the user has scrolled (e.g., which section or which page the user is currently reading). The digital book application may extrapolate from the user's screen size to determine the size and contents of the buffer.

In particular embodiments, given a specific object (e.g., image, video, audio, etc.) in a hierarchy, there may be different versions of the same object tailored to different types of electronic devices. Different types of devices may have different resources (e.g., processors, memories, network connections, etc.), capabilities (e.g., hardware and software), or operational environments (e.g., operating systems). For example, some devices may have powerful processors, large amounts of cache, fast network connections, big display screens, etc. Conversely, some devices may have lesser capabilities. A specific object may have different versions tailored to devices having different resources and capabilities. As an example, an image may have different versions with different resolutions, dimensions, or formats suitable for different types of devices. The same image may be zoomable on some types of devices but not others. As another example, a video may have different versions with different qualities, compression rates, or formats suitable for different types of devices. A smartphone may receive a lower resolution version of the image while a tablet may receive a higher resolution version of the image, as the smartphone probably has a smaller display screen than the tablet. A device with a faster network connection (e.g., Ethernet connection) may receive a higher quality version of the video while another device with a slower network connection (e.g., cellular telephone connection) may receive a lower quality version of the video, as the first device is able to download the video data faster than the second device.

In particular embodiments, given a specific hierarchy of objects, there may be different versions of the same object hierarchy tailored to different types of electronic devices. The structure of the hierarchy (e.g., in terms of object positions or the specific objects in the hierarchy) may differ somewhat between the versions. Alternatively or in addition, some of the objects in the hierarchy may each have different versions. As an example, there may be different versions of a book tailored to different types of devices. For a device with more resources (e.g., fast network connections, more memory), the version of the book may include more multimedia content (e.g., videos, audios) or higher quality multimedia content. For a device with less resources, the version of the book may include more textual content or lower quality multimedia content.

FIG. 6 illustrates an example method for downloading different versions of an object to different types of devices. If an object is to be downloaded to a device and there are multiple versions of the object (STEP 610, “YES”), then in particular embodiments, a specific version of the object is selected based on the resources or capabilities (e.g., hardware or software configurations) of the device (STEP 620). The selected version of the object is more suitable for the device to which it is to be downloaded. The selected version of the object is downloaded to the device (STEP 630). On the other hand, if the object does not have multiple versions (STEP 610, “NO), the object is downloaded to the device (STEP 640).

Particular embodiments may be implemented on one or more electronic devices or computer systems. FIG. 7 illustrates an example electronic device 700. For example, computer system 700 may be an embodiment for device 110A or device 110B illustrated in FIG. 1. In particular embodiments, one or more computer systems 700 perform one or more steps of one or more methods described or illustrated herein. In particular embodiments, one or more computer systems 700 provide functionality described or illustrated herein. In particular embodiments, software running on one or more computer systems 700 performs one or more steps of one or more methods described or illustrated herein or provides functionality described or illustrated herein. Particular embodiments include one or more portions of one or more computer systems 700.

This disclosure contemplates any suitable number of computer systems 700. This disclosure contemplates computer system 700 taking any suitable physical form. As example and not by way of limitation, computer system 700 may be an embedded computer system, a system-on-chip (SOC), a single-board computer system (SBC) (such as, for example, a computer-on-module (COM) or system-on-module (SOM)), a desktop computer system, a laptop or notebook computer system, an interactive kiosk, a mainframe, a mesh of computer systems, a mobile telephone, a personal digital assistant (PDA), a server, or a combination of two or more of these. Where appropriate, computer system 700 may include one or more computer systems 700; be unitary or distributed; span multiple locations; span multiple machines; or reside in a cloud, which may include one or more cloud components in one or more networks. Where appropriate, one or more computer systems 700 may perform without substantial spatial or temporal limitation one or more steps of one or more methods described or illustrated herein. As an example and not by way of limitation, one or more computer systems 700 may perform in real time or in batch mode one or more steps of one or more methods described or illustrated herein. One or more computer systems 700 may perform at different times or at different locations one or more steps of one or more methods described or illustrated herein, where appropriate.

In particular embodiments, computer system 700 includes a processor 702, memory 704, storage 706, an input/output (I/O) interface 708, a communication interface 710, and a bus 712. Although this disclosure describes and illustrates a particular computer system having a particular number of particular components in a particular arrangement, this disclosure contemplates any suitable computer system having any suitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor 702 includes hardware for executing instructions, such as those making up a computer program. As an example and not by way of limitation, to execute instructions, processor 702 may retrieve (or fetch) the instructions from an internal register, an internal cache, memory 704, or storage 706; decode and execute them; and then write one or more results to an internal register, an internal cache, memory 704, or storage 706. In particular embodiments, processor 702 may include one or more internal caches for data, instructions, or addresses. This disclosure contemplates processor 702 including any suitable number of any suitable internal caches, where appropriate. As an example and not by way of limitation, processor 702 may include one or more instruction caches, one or more data caches, and one or more translation lookaside buffers (TLBs). Instructions in the instruction caches may be copies of instructions in memory 704 or storage 706, and the instruction caches may speed up retrieval of those instructions by processor 702. Data in the data caches may be copies of data in memory 704 or storage 706 for instructions executing at processor 702 to operate on; the results of previous instructions executed at processor 702 for access by subsequent instructions executing at processor 702 or for writing to memory 704 or storage 706; or other suitable data. The data caches may speed up read or write operations by processor 702. The TLBs may speed up virtual-address translation for processor 702. In particular embodiments, processor 702 may include one or more internal registers for data, instructions, or addresses. This disclosure contemplates processor 702 including any suitable number of any suitable internal registers, where appropriate. Where appropriate, processor 702 may include one or more arithmetic logic units (ALUs); be a multi-core processor; or include one or more processors 702. Although this disclosure describes and illustrates a particular processor, this disclosure contemplates any suitable processor.

In particular embodiments, memory 704 includes main memory for storing instructions for processor 702 to execute or data for processor 702 to operate on. As an example and not by way of limitation, computer system 700 may load instructions from storage 706 or another source (such as, for example, another computer system 700) to memory 704. Processor 702 may then load the instructions from memory 704 to an internal register or internal cache. To execute the instructions, processor 702 may retrieve the instructions from the internal register or internal cache and decode them. During or after execution of the instructions, processor 702 may write one or more results (which may be intermediate or final results) to the internal register or internal cache. Processor 702 may then write one or more of those results to memory 704. In particular embodiments, processor 702 executes only instructions in one or more internal registers or internal caches or in memory 704 (as opposed to storage 706 or elsewhere) and operates only on data in one or more internal registers or internal caches or in memory 704 (as opposed to storage 706 or elsewhere). One or more memory buses (which may each include an address bus and a data bus) may couple processor 702 to memory 704. Bus 712 may include one or more memory buses, as described below. In particular embodiments, one or more memory management units (MMUs) reside between processor 702 and memory 704 and facilitate accesses to memory 704 requested by processor 702. In particular embodiments, memory 704 includes random access memory (RAM). This RAM may be volatile memory, where appropriate. Where appropriate, this RAM may be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, where appropriate, this RAM may be single-ported or multi-ported RAM. This disclosure contemplates any suitable RAM. Memory 704 may include one or more memories 704, where appropriate. Although this disclosure describes and illustrates particular memory, this disclosure contemplates any suitable memory.

In particular embodiments, storage 706 includes mass storage for data or instructions. As an example and not by way of limitation, storage 706 may include an HDD, a floppy disk drive, flash memory, an optical disc, a magneto-optical disc, magnetic tape, or a Universal Serial Bus (USB) drive or a combination of two or more of these. Storage 706 may include removable or non-removable (or fixed) media, where appropriate. Storage 706 may be internal or external to computer system 700, where appropriate. In particular embodiments, storage 706 is non-volatile, solid-state memory. In particular embodiments, storage 706 includes read-only memory (ROM). Where appropriate, this ROM may be mask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM), or flash memory or a combination of two or more of these. This disclosure contemplates mass storage 706 taking any suitable physical form. Storage 706 may include one or more storage control units facilitating communication between processor 702 and storage 706, where appropriate. Where appropriate, storage 706 may include one or more storages 706. Although this disclosure describes and illustrates particular storage, this disclosure contemplates any suitable storage.

In particular embodiments, I/O interface 708 includes hardware, software, or both providing one or more interfaces for communication between computer system 700 and one or more I/O devices. Computer system 700 may include one or more of these I/O devices, where appropriate. One or more of these I/O devices may enable communication between a person and computer system 700. As an example and not by way of limitation, an I/O device may include a keyboard, keypad, microphone, monitor, mouse, printer, scanner, speaker, still camera, stylus, tablet, touch screen, trackball, video camera, another suitable I/O device or a combination of two or more of these. An I/O device may include one or more sensors. This disclosure contemplates any suitable I/O devices and any suitable I/O interfaces 708 for them. Where appropriate, I/O interface 708 may include one or more device or software drivers enabling processor 702 to drive one or more of these I/O devices. I/O interface 708 may include one or more I/O interfaces 708, where appropriate. Although this disclosure describes and illustrates a particular I/O interface, this disclosure contemplates any suitable I/O interface.

In particular embodiments, communication interface 710 includes hardware, software, or both providing one or more interfaces for communication (such as, for example, packet-based communication) between computer system 700 and one or more other computer systems 700 or one or more networks. As an example and not by way of limitation, communication interface 710 may include a network interface controller (NIC) or network adapter for communicating with an Ethernet or other wire-based network or a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network, such as a WI-FI network. This disclosure contemplates any suitable network and any suitable communication interface 710 for it. As an example and not by way of limitation, computer system 700 may communicate with an ad hoc network, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), or one or more portions of the Internet or a combination of two or more of these. One or more portions of one or more of these networks may be wired or wireless. As an example, computer system 700 may communicate with a wireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a cellular telephone network (such as, for example, a Global System for Mobile Communications (GSM) network), or other suitable wireless network or a combination of two or more of these. Computer system 700 may include any suitable communication interface 710 for any of these networks, where appropriate. Communication interface 710 may include one or more communication interfaces 710, where appropriate. Although this disclosure describes and illustrates a particular communication interface, this disclosure contemplates any suitable communication interface.

In particular embodiments, bus 712 includes hardware, software, or both coupling components of computer system 700 to each other. As an example and not by way of limitation, bus 712 may include an Accelerated Graphics Port (AGP) or other graphics bus, an Enhanced Industry Standard Architecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT) interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBAND interconnect, a low-pin-count (LPC) bus, a memory bus, a Micro Channel Architecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, a PCI-Express (PCIe) bus, a serial advanced technology attachment (SATA) bus, a Video Electronics Standards Association local (VLB) bus, or another suitable bus or a combination of two or more of these. Bus 712 may include one or more buses 712, where appropriate. Although this disclosure describes and illustrates a particular bus, this disclosure contemplates any suitable bus or interconnect.

Herein, a computer-readable non-transitory storage medium or media may include one or more semiconductor-based or other integrated circuits (ICs) (such, as for example, field-programmable gate arrays (FPGAs) or application-specific ICs (ASICs)), hard disk drives (HDDs), hybrid hard drives (HHDs), optical discs, optical disc drives (ODDs), magneto-optical discs, magneto-optical drives, floppy diskettes, floppy disk drives (FDDs), magnetic tapes, solid-state drives (SSDs), RAM-drives, SECURE DIGITAL cards or drives, any other suitable computer-readable non-transitory storage medium or media, or any suitable combination of two or more of these, where appropriate. A computer-readable non-transitory storage medium or media may be volatile, non-volatile, or a combination of volatile and non-volatile, where appropriate.

Herein, “or” is inclusive and not exclusive, unless expressly indicated otherwise or indicated otherwise by context. Therefore, herein, “A or B” means “A, B, or both,” unless expressly indicated otherwise or indicated otherwise by context. Moreover, “and” is both joint and several, unless expressly indicated otherwise or indicated otherwise by context. Therefore, herein, “A and B” means “A and B, jointly or severally,” unless expressly indicated otherwise or indicated otherwise by context.

This disclosure encompasses all changes, substitutions, variations, alterations, and modifications to the example embodiments herein that a person having ordinary skill in the art would comprehend. Moreover, reference in the appended claims to an apparatus or system or a component of an apparatus or system being adapted to, arranged to, capable of, configured to, enabled to, operable to, or operative to perform a particular function encompasses that apparatus, system, component, whether or not it or that particular function is activated, turned on, or unlocked, as long as that apparatus, system, or component is so adapted, arranged, capable, configured, enabled, operable, or operative.

Claims

1. A method, performed by one or more first electronic devices, comprising:

downloading a hierarchy of objects to a second electronic device for presentation to a user of the second electronic device, the objects are presented to the user of the second electronic device according to a structure of the hierarchy, and the objects are downloaded to the second electronic device in an order determined based on which specific objects in the hierarchy are currently presented to the user of the second electronic device.

2. The method of claim 1, wherein the objects are downloaded to the second electronic device in the order determined based further on a predicted order for presenting the objects to the user, such that if a first object is likely to be presented to the user before a second object, then the first object is downloaded to the second electronic device before the second object.

3. The method of claim 2, wherein the predicted order for presenting the objects to the user is determined based on positions in the hierarchy of the specific objects that are currently presented to the user.

4. The method of claim 2, wherein the predicted order for presenting the objects to the user is determined based on movements made by the user when interacting with the specific objects that are currently presented to the user.

5. The method of claim 1, wherein one or more objects in the hierarchy each has a plurality of versions suitable for a plurality of types of electronic devices.

6. The method of claim 5, further comprising

when downloading a specific object to the second electronic device, if the specific object has a plurality of versions, then: selecting a specific version of the specific object based on a type of the second electronic device; and downloading the specific version of the specific object to the second electronic device.

7. The method of claim 6, wherein the specific version of the specific object is selected based on a hardware configuration of the second electronic device.

8. The method of claim 6, wherein the specific version of the specific object is selected based on a software configuration of the second electronic device.

9. The method of claim 1, further comprising rendering the objects on the second electronic device in the order determined based on which specific objects in the hierarchy are currently presented to the user of the second electronic device.

10. The method of claim 9, wherein the objects are rendered on the second electronic device in the order determined based further on the predicted order for presenting the objects to the user, such that if a first object is likely to be presented to the user before a second object, then the first object is rendered on the second electronic device before the second object.

11. A first apparatus comprising:

a memory comprising instructions executable by one or more processors; and
the one or more processors coupled to the memory and operable to execute the instructions, the one or more processors being operable when executing the instructions to: download a hierarchy of objects to a second electronic device for presentation to a user of the second electronic device, the objects are presented to the user of the second electronic device according to a structure of the hierarchy, and the objects are downloaded to the second electronic device in an order determined based on which specific objects in the hierarchy are currently presented to the user of the second electronic device.

12. The apparatus of claim 11, wherein the objects are downloaded to the second electronic device in the order determined based further on a predicted order for presenting the objects to the user, such that if a first object is likely to be presented to the user before a second object, then the first object is downloaded to the second electronic device before the second object.

13. The apparatus of claim 12, wherein the predicted order for presenting the objects to the user is determined based on positions in the hierarchy of the specific objects that are currently presented to the user.

14. The apparatus of claim 12, wherein the predicted order for presenting the objects to the user is determined based on movements made by the user when interacting with the specific objects that are currently presented to the user.

15. The apparatus of claim 11, wherein:

one or more objects in the hierarchy each has a plurality of versions suitable for a plurality of types of electronic devices; and
the processors are further operable when executing the instructions to: when downloading a specific object to the second electronic device, if the specific object has a plurality of versions, then: select a specific version of the specific object based on a type of the second electronic device; and download the specific version of the specific object to the second electronic device.

16. One or more computer-readable non-transitory storage media embodying logic that is operable when executed to:

download a hierarchy of objects to a second electronic device for presentation to a user of the second electronic device, the objects are presented to the user of the second electronic device according to a structure of the hierarchy, and the objects are downloaded to the second electronic device in an order determined based on which specific objects in the hierarchy are currently presented to the user of the second electronic device.

17. The media of claim 16, wherein the objects are downloaded to the second electronic device in the order determined based further on a predicted order for presenting the objects to the user, such that if a first object is likely to be presented to the user before a second object, then the first object is downloaded to the second electronic device before the second object.

18. The media of claim 17, wherein the predicted order for presenting the objects to the user is determined based on positions in the hierarchy of the specific objects that are currently presented to the user.

19. The media of claim 17, wherein the predicted order for presenting the objects to the user is determined based on movements made by the user when interacting with the specific objects that are currently presented to the user.

20. The media of claim 16, wherein:

one or more objects in the hierarchy each has a plurality of versions suitable for a plurality of types of electronic devices; and
the logic is further operable when executed to: when downloading a specific object to the second electronic device, if the specific object has a plurality of versions, then: select a specific version of the specific object based on a type of the second electronic device; and download the specific version of the specific object to the second electronic device.
Patent History
Publication number: 20130198261
Type: Application
Filed: Jun 5, 2012
Publication Date: Aug 1, 2013
Inventors: Michael Matas (San Francisco, CA), Kimon Tsinteris (San Francisco, CA), Austin Sarner (San Francisco, CA), Charles Melcher (New York, NY)
Application Number: 13/489,172
Classifications
Current U.S. Class: Client/server (709/203)
International Classification: H04L 29/08 (20060101);