Personal computers traditionally store files locally on a medium directly accessed by the computer generating or editing the files. As network access has become more widespread, it has become feasible to store files on a remote network. Storing files on a remote network, also referred to as cloud storage, allows a user to access the files using any device that can access the network. Such cloud storage systems reduce the user's need for local storage capacity and assure the user that, regardless of which device is accessing a file, an up-to-date copy of the file is being accessed.
Existing cloud storage systems limit the metadata associated with the files they store. Such systems may record information corresponding to different metadata categories, such as a name of the file, a creation date of the file, the last time the contents of the file were modified, or other suitable information that is typically limited to a set of predetermined categories of metadata. Applications interacting with the files stored in existing cloud storage systems are therefore restricted to either using the predetermined metadata categories or relying on a second storage system to keep track of metadata that the cloud storage system does not store.
Thus there exists a need in the art to allow applications to generate and interact with alternative metadata categories. The systems and methods described herein allow a cloud storage system to store third-party-generated metadata that is associated with a file but may not be associated with a predefined metadata category. The systems and methods described herein further allow a cloud storage system to identify files to third-party applications based on one or more metadata elements.
In certain aspects, the systems and methods described herein relate to providing metadata associated with a file stored on a cloud storage system to an application. Metadata may include a text string, a numerical value, a date or time, or other suitable information, and in some implementations some metadata may change as a predetermined function of time. The cloud storage system may include a communication processor that receives a request to access metadata associated with the file. The communication processor identifies a first application associated with the request, and identifies a first set of metadata categories associated with the first application. The communication processor filters metadata associated with the file based on the first set of metadata categories, and provides the filtered metadata to the application. In some implementations, the communication processor also identifies whether a user is associated with a metadata category and which user is associated with the request, and such information may also be used to filter metadata associated with the file. In some implementations, the communication processor also generates both metadata categories in the first set of metadata categories and metadata in such categories. In some such implementations, the communication processor also deletes such metadata categories when a user revokes permission of their associated application to access the file.
In certain aspects, the systems and methods described herein relate to creating metadata associated with a file stored on a cloud storage system. The cloud storage system may include a communication processor that receives a request to access the file with an application. The communication processor identifies the application and generates a metadata category associated only with the identified application. The communication processor creates metadata associated with the generated metadata category and corresponding to the file. In some implementations, the communication processor deletes the metadata category in response to a user revoking permission of the application to access the file.
The systems and methods described herein are set forth in the appended claims. However, for the purpose of explanation, several embodiments are set forth in the following drawings.
In the following description, numerous details are set forth for the purpose of explanation. However, one of ordinary skill in the art will realize that the implementations described herein may be practiced without the use of these specific details and that the implementations described herein may be modified, supplemented, or otherwise altered without departing from the scope of the systems and methods described herein.
The systems and methods described herein relate to accessing and editing metadata associated with a file stored on a cloud storage system. The cloud storage system may allow applications to create application-specific metadata for a file, and may further identify files based on general or application-specific metadata. The cloud storage system may restrict which users or which applications may access or alter metadata associated with certain metadata categories.
A user device 106 is a computing device that may be used to access cloud storage device 102, and may be a personal laptop computer, a personal desktop computer, a tablet computer, a smartphone, or some other suitable computing device. User device 106 may include installed applications, or may have access to applications that are capable of accessing or altering files stored on cloud storage device 102. In certain implementations, user device 106 may store information regarding one or more users, the data processing capacity of user device 106, a list of installed applications, a list of file types accessible by each installed application, the categories of metadata used by each installed application, or other suitable information regarding the capability of user device 106 to access files stored on cloud storage device 102. In such implementations, user device 106 may be configured to transmit a portion or the whole of such information upon first connecting to cloud storage device 102, in response to a query by cloud storage device 102, or under other suitable circumstances.
Cloud storage system 100 stores computer files and allows a user to access the files with a remote user device 106. A user device 106 connects to cloud storage device 102 through network 104. An application on user device 106 may generate, access, edit, or delete metadata associated with a file stored on cloud storage device 102.
The depicted communication port 202 is a network port which receives user commands via network 104 and transmits information sent by cloud storage engine 200. Communication port 202 may include a 100BASE-TX port, a 1000BASE-T port, a 10GBASE-T port, a Wi-Fi antenna, a cellular antenna, or other suitable network ports. In certain implementations, there may be a different number of ports than are depicted. In certain implementations, communication port 202 may provide secure communications, such as by using the Secure Sockets Layer (SSL) protocol, the Transport Layer Security (TLS) protocol, or other suitable protocol.
Communication processor 204 may be a computer processor which identifies instructions received through communication port 202 and may store or transmit information in response. Upon a user connecting to cloud storage engine 200, communication processor 204 may identify the user, in certain implementations by comparing login information provided by the user to information stored in user database 208. Communication processor 204 may further identify the user device 106 or an application thereon from packet headers identifying the source of data received from the user, by querying the user device 106, from information provided by the user device 106 at login, or through some other suitable method of identifying the user device or an application thereon. Communication processor 204 may respond to a user command by identifying files having metadata that meets criteria provided in the user command, by transmitting metadata associated with one or more files to a user, by editing metadata associated with a file, or by some other suitable measure according to the command. Communication processor 204 may also provide access to or edit content of a file according to a user command, which in some implementations may also cause communication processor 204 to edit metadata associated with the file. As an illustrative example of such implementations, upon implementing a user edit to the content of a file, communication processor 204 may also adjust metadata indicating the last time the file was edited.
File database 206 may be a computer-readable and -writable medium storing at least one file associated with a cloud storage system 100. In some implementations, a portion of file database 206 may be accessed through a remote network. Such a portion may be a third-party database. Files stored on file database 206 may include text, images, audio files, video files, spreadsheets, presentation files, HTML files, or other suitable computer files. File database 206 may also store metadata associated with each file. Each item of metadata may correspond to a metadata category, such as a Multipurpose Internet Mail Extensions (MIME) type of the file, the time at which the file was generated, or other suitable metadata category. A metadata category may be associated with every file in file database 206 or with only a portion of the files in file database 206. As an illustrative example, each file in file database 206 may have a file identifier, while only files associated with a particular application may be associated with a metadata category unique to the application. In certain implementations, metadata may be stored in a database separate from file database 206.
Each category of metadata may be general or application-specific. General metadata may be accessible to any application associated with the file, and in some implementations any application associated with the file may edit general metadata. Application-specific metadata may be accessible to and edited by a single application. In some implementations, application-specific metadata may be accessible to a set of applications. In some such implementations, a subset of the applications may edit the application-specific metadata. File database 206 may store information indicating whether a category of metadata is general or application-specific, and with which application or set of applications an application-specific category of metadata is associated. In some implementations, any application may generate general metadata categories. In some implementations, information about whether metadata is general or application-specific may be stored in application database 210.
Each category of metadata may also be public or private. Public metadata may be accessed by any user with permission to access the file, while private metadata may only be accessed by an owner of the metadata or a user that the owner authorized to access the private metadata. As an illustrative example, a filename may be public metadata, while metadata indicating the stage of a document within a workflow may be private metadata. File database 206 may store information indicating whether a category of metadata is public or private, and which user or set of users may access or edit public or private metadata. In some implementations, information about whether metadata is public or private may be stored in user database 208.
In some implementations, a metadata category may be associated with another metadata category. As an illustrative example of such implementations, a first metadata category may indicate a document priority, while a second metadata category may indicate a deadline after which the document priority will change.
User database 208 may be a computer-readable and -writable medium storing information associated with at least one user of cloud storage engine 200. The information may include one or more of a username and password associated with a user, a list of the files associated with each user, a list of at least one user device 106 associated with the user, a list of applications available to a user, a list of each application the user has authorized to access each file or file type represented in the user's files, user-specified preferences, or other suitable user information.
Application database 210 may be a computer-readable and -writable medium storing information regarding applications associated with cloud storage engine 200. Application database 210 may store metadata associated with an application, which may include metadata categories visible to the application, metadata categories that may be edited by the application, file types the application is capable of opening, the users authorized to use the application, or other suitable information. In some implementations, application database 210 may include compiled or uncompiled computer instructions comprising an application, a link to access a cloud application, a link to download a native application, an icon associated with the application, a description of the application, or other suitable information regarding an application. In some implementations, some applications may be stored as computer instructions that may be performed by a web browser run on a user device 106, which may be written in HTML, JavaScript, Asynchronous JavaScript and XML (Ajax), or another suitable computer language. In some such implementations, a stored application may be executed by cloud storage engine 200 and one or more outputs from the application may be transmitted to a user device 106.
Authentication processor 212 may be a computer processor that blocks unauthorized access or editing of information associated with cloud storage engine 200. Unauthorized access may be detected by comparing one or more of a username and password combination, information identifying a user device 106, geographic information associated with the user device 106, or other suitable information with information stored in user database 208. If a request to access or edit information is not successfully verified, authentication processor 212 may transmit a message to the user or a system administrator, block user device 106, temporarily lock the user account, or take some other predetermined action. In certain implementations, if a user device 106 has not previously been connected to cloud storage engine 200, authentication processor 212 may require the user to provide identification information, which may include a username and password combination, an identification number provided to the user by a voice or text message sent to a telephone number previously provided by the user, or other predetermined identification information. In certain implementations, authentication processor 212 may verify that an application may be allowed to access or edit contents or metadata of a file by searching file database 206, user database 208, and application database 210 to determine whether the application is associated with the user who generated the request, whether the user is permitted to access or alter the file, whether the application is associated with the category of metadata being accessed or edited, whether the user has authorized the application to access the file or the file type, or other suitable verification information. In some such implementations, authentication processor 212 may verify a security token provided by the application against information stored in one or more of file database 206, user database 208, or application database 210. If an application is not authorized to access information, authentication processor 212 may prevent the application from accessing the information, transmit a message to the user or a system administrator, or take some other suitable action. In certain implementations, such a message to the user may ask if the user wishes to authorize the application to access the information. In certain implementations, authentication processor 212 may establish a secure connection with user device 106 using a protocol such as the SSL or TLS protocols.
Cloud storage engine 200 receives transmissions from user device 106 at communication port 202 via network 104. Communication processor 204 may identify an account associated with a user upon the establishment of a connection with a user device 106, and authentication processor 212 may compare information provided by user device 106 with information stored in user database 208 to verify that the user has access to the account. Communication processor 204 may identify files based on metadata associated with the file. Authentication processor 212 may verify that requests to access or edit one or more metadata categories associated with a file were generated by a user and an application authorized to access or edit the metadata categories, and, if the request is successfully verified, communication processor 204 may implement the request.
In step 402, communication processor 204 identifies the user and the application associated with the request based on the source of the request, a token associated with the request, or some other suitable indicator. In step 403, authentication processor 212 verifies that both the user and the application generating the request are authorized to access the metadata categories associated with the request made in step 401. If the request is made by an unauthorized user or application, metadata search process 400 ends with communication processor 204 taking remedial action in step 404. The remedial action may include indicating that there are no files meeting the criteria of step 401, blocking the application from accessing cloud storage engine 200, alerting the user or a system administrator, transmitting a message to the user informing them how they may gain access to the file, or some other appropriate action. If authentication processor 212 instead verifies that the user and the application are authorized to access the varieties of metadata indicated in the search of step 401, metadata search process 400 continues to step 405.
In step 405, communication processor 204 determines which files are available to the user identified in step 402. The determination may be based on user-related metadata stored in file database 206 or in a listing of files associated with a user stored in user database 208. In step 406, communication processor 204 then identifies which of the available files meet the requested metadata criteria. This information may be provided to a user or to an application as a list of filenames or other file identifiers. In some implementations, the list may also provide information such as the metadata associated with the criteria of step 401.
In step 502, communication processor 204 identifies the user and the application associated with the request based on the source of the request, a token associated with the request, or some other suitable indicator. In step 503, authentication processor 212 verifies that both the user and the application generating the request are authorized to access the metadata requested in step 501. If the request is made by an unauthorized user or application, metadata search process 500 ends with communication processor 204 taking remedial action in step 504. The remedial action may include indicating that the requested metadata is not available, blocking the application from accessing cloud storage engine 200, alerting the user or a system administrator, transmitting a message to the user informing them how they may gain access to the metadata, or some other appropriate action. If authentication processor 212 instead verifies that the user and the application are authorized to access the metadata requested in step 501, metadata search process 500 ends with step 505, in which communication processor 204 retrieves the requested metadata from file database 206 and provides it to the user through the application used to generate the request.
In step 602, communication processor 204 identifies the user and the application associated with the request based on the source of the request, a token associated with the request, or some other suitable indicator. In step 603, authentication processor 212 verifies that both the user and the application generating the request are authorized to make the edit requested in step 601. If the request is made by an unauthorized user or application, metadata edit process 600 may end with communication processor 204 taking remedial action in step 604. The remedial action may include blocking the application from accessing cloud storage engine 200, alerting the user or a system administrator, transmitting a message to the user informing them how they may gain access to the file, or some other appropriate action. If authentication processor 212 instead verifies that the user and the application are authorized to make the edit requested in step 601, metadata edit process 600 continues to step 605.
In step 605, communication processor 204 determines whether the file is associated with the metadata category associated with the request of step 601. If so, metadata edit process 600 ends with step 606, in which communication processor 204 edits the metadata according to the request of step 601. If not, metadata process 600 continues to step 607, in which communication processor 204 determines whether the metadata quota associated with the file has been reached. A metadata quota may restrict the number of metadata categories associated with a file, the number of an application's application-specific metadata categories associated with a file, or otherwise restrict the metadata that may be associated with a file. As an illustrative example of a metadata quota, a file may be restricted to having one hundred metadata categories, with a maximum of thirty application-specific metadata categories associated with any one application. If there is space to store the metadata category, metadata edit process 600 ends with step 608, in which communication processor 204 generates the metadata category for the file and stores the requested metadata therein. Thus, the metadata stored in cloud storage engine 200 is not limited to a hardcoded set of metadata categories, but may accept arbitrary metadata categories generated by applications accessing cloud storage engine 200. In some implementations, there may be no quota, in which case step 607 would always be followed by step 608. Otherwise, if storing the metadata would cause the metadata quota to be exceeded, metadata edit process ends with step 609, in which the request is denied. In step 609, communication processor 204 may transmit an error code to user device 106, generate a message indicating what metadata may be deleted to allow the request to be fulfilled, or generate some other suitable message to user device 106.
In some implementations, a metadata quota may also or alternatively limit the size of metadata associated with a file, such as the amount of memory available for a metadata category, the amount of memory available for all metadata associated with a file, or some other suitable limit. In such implementations, step 605 or step 607 may be followed by step 609 if the requested edit would cause the metadata quota to be exceeded.
The computing device 700 comprises at least one communications interface unit, an input/output controller 710, system memory, and one or more data storage devices. This can support a network connection such as a connection to network 104 in
The computing device 700 may be configured in a distributed architecture, wherein databases and processors are housed in separate units or locations. Some units perform primary processing functions and contain, at a minimum, a general controller or a processor and a system memory. In distributed architecture implementations, each of these units may be attached via the communications interface unit 708 to a communications hub or port (not shown) that serves as a primary communication link with other servers, client or user computers, and other related devices. The communications hub or port may have minimal processing capability itself, serving primarily as a communications router. A variety of communications protocols may be part of the system, including, but not limited to: Ethernet, SAP, SAS™, ATP, BLUETOOTH™, GSM, and TCP/IP.
The CPU 706 comprises a processor, such as one or more conventional microprocessors and one or more supplementary co-processors such as math co-processors for offloading workload from the CPU 706. The CPU 706 is in communication with the communications interface unit 708 and the input/output controller 710, through which the CPU 706 communicates with other devices such as other servers, user terminals, or devices. The communications interface unit 708 and the input/output controller 710 may include multiple communication channels for simultaneous communication with, for example, other processors, servers, or client terminals.
The CPU 706 is also in communication with the data storage device. The data storage device may comprise an appropriate combination of magnetic, optical, or semiconductor memory, and may include, for example, RAM 702, ROM 704, flash drive, an optical disc such as a compact disc, or a hard disk or drive. The CPU 706 and the data storage device each may be, for example, located entirely within a single computer or other computing device; or connected to each other by a communication medium, such as a USB port, serial port cable, a coaxial cable, an Ethernet cable, a telephone line, a radio frequency transceiver, or other similar wireless or wired medium or combination of the foregoing. For example, the CPU 706 may be connected to the data storage device via the communications interface unit 708. The CPU 706 may be configured to perform one or more particular processing functions.
The data storage device may store, for example, (i) an operating system 712 for the computing device 700; (ii) one or more applications 714 (e.g., computer program code or a computer program product) adapted to direct the CPU 706 in accordance with the systems and methods described here, and particularly in accordance with the processes described in detail with regard to the CPU 706; or (iii) database(s) 716 adapted to store information that may be utilized to store information required by the program. The depicted database 716 can be any suitable database system, and can be a local or distributed database system.
The operating system 712 and applications 714 may be stored, for example, in a compressed, an uncompiled and an encrypted format, and may include computer program code. The instructions of the program may be read into a main memory of the processor from a computer-readable medium other than the data storage device, such as from the ROM 704 or from the RAM 702, or from a computer data signal embodied in a carrier wave, such as that found within the well-known Web pages transferred among devices connected to the Internet. While execution of sequences of instructions in the program causes the CPU 706 to perform the process steps described herein, hard-wired circuitry may be used in place of, or in combination with, software instructions for implementation of the processes of the present disclosure. Thus, the systems and methods described are not limited to any specific combination of hardware and software.
Suitable computer program code may be provided for performing one or more functions in relation to a cloud storage system as described herein. The program also may include program elements such as an operating system 712, a database management system, and “device drivers” that allow the processor to interface with computer peripheral devices (e.g., a video display, a keyboard, a computer mouse, etc.) via the input/output controller 710.
The term “computer-readable medium” as used herein refers to any non-transitory medium that provides or participates in providing instructions to the processor of the computing device 700 (or any other processor of a device described herein) for execution. Such a medium may take many forms, including but not limited to, non-volatile media and volatile media. Non-volatile media include, for example, optical, magnetic, or opto-magnetic disks, or integrated circuit memory, such as flash memory. Volatile media include dynamic random access memory (DRAM), which typically constitutes the main memory. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, any other magnetic medium, a CD-ROM, DVD, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, an EPROM or EEPROM (electronically erasable programmable read-only memory), a FLASH-EEPROM, any other memory chip or cartridge, or any other non-transitory medium from which a computer can read.
Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to the CPU 706 (or any other processor of a device described herein) for execution. For example, the instructions may initially be borne on a magnetic disk of a remote computer (not shown). The remote computer can load the instructions into its dynamic memory and send the instructions over an Ethernet connection, cable line, or even telephone line using a modem. A communications device local to a computing device 700 (e.g., a server) can receive the data on the respective communications line and place the data on a system bus for the processor. The system bus carries the data to main memory, from which the processor retrieves and executes the instructions. The instructions received by main memory may optionally be stored in memory either before or after execution by the processor. In addition, instructions may be received via a communication port as electrical, electromagnetic, or optical signals, which are exemplary forms of wireless communications or data streams that carry various types of information.
Some implementations of the above described may be implemented by the preparation of application-specific integrated circuits or by interconnecting an appropriate network of conventional component circuits, as will be apparent to those skilled in the art. Those of skill in the art would understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, requests, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
While various embodiments of the present disclosure have been shown and described herein, it will be obvious to those skilled in the art that such embodiments are provided by way of example only. Numerous variations, changes, and substitutions will now occur to those skilled in the art without departing from the disclosure. For example, users may have metadata quotas rather than individual files, uninstalling an application or revoking its access to a file may delete application-specific metadata associated with the application, or changing metadata associated with a folder of the computer system may change corresponding metadata of the files contained within the folder. It should be understood that various alternatives to the embodiments of the disclosure described herein may be employed in practicing the disclosure. Elements of an implementation of the systems and methods described herein may be independently implemented or combined with other implementations. It is intended that the following claims define the scope of the disclosure and that methods and structures within the scope of these claims and their equivalents be covered thereby.
This application claims priority to U.S. Provisional Application Ser. No. 61/806,079, filed on Mar. 28, 2013, entitled “System and Method to Store Third-Party Metadata in a Cloud Storage System,” the entire contents of which are hereby incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
7263688 | Pitzel et al. | Aug 2007 | B2 |
7680932 | Defaix et al. | Mar 2010 | B2 |
7689633 | Li et al. | Mar 2010 | B1 |
7707413 | Lunt et al. | Apr 2010 | B2 |
7711835 | Braddy et al. | May 2010 | B2 |
7734914 | Malasky | Jun 2010 | B1 |
7779113 | Samar | Aug 2010 | B1 |
7827201 | Gordon et al. | Nov 2010 | B1 |
7917888 | Chong et al. | Mar 2011 | B2 |
7941419 | Bhatkar et al. | May 2011 | B2 |
7996380 | Arrouye et al. | Aug 2011 | B2 |
8108427 | Prahlad et al. | Jan 2012 | B2 |
8131723 | Sim-Tang | Mar 2012 | B2 |
8151323 | Harris et al. | Apr 2012 | B2 |
8250455 | Kadowaki et al. | Aug 2012 | B2 |
8341708 | Eatough et al. | Dec 2012 | B1 |
8346781 | Cornelius | Jan 2013 | B1 |
8364759 | Moromisato et al. | Jan 2013 | B2 |
8386478 | Wang | Feb 2013 | B2 |
8468455 | Jorgensen et al. | Jun 2013 | B2 |
8478817 | Duggal | Jul 2013 | B2 |
8484259 | Makkar | Jul 2013 | B1 |
8504689 | Ferris et al. | Aug 2013 | B2 |
8522137 | Brown et al. | Aug 2013 | B1 |
8572033 | Shukla | Oct 2013 | B2 |
8612439 | Prahlad et al. | Dec 2013 | B2 |
8706800 | Ahmed et al. | Apr 2014 | B1 |
8812627 | Donahue et al. | Aug 2014 | B2 |
8856176 | Venu et al. | Oct 2014 | B1 |
8880580 | Simmons et al. | Nov 2014 | B2 |
9396194 | Kaszynski | Jul 2016 | B2 |
20030033369 | Bernhard | Feb 2003 | A1 |
20030126592 | Mishra et al. | Jul 2003 | A1 |
20040059776 | Pitzel et al. | Mar 2004 | A1 |
20040205358 | Erickson | Oct 2004 | A1 |
20040243827 | Aguilera | Dec 2004 | A1 |
20050243760 | Yoshioka | Nov 2005 | A1 |
20050289538 | Black-Ziegelbein et al. | Dec 2005 | A1 |
20060005168 | Singh | Jan 2006 | A1 |
20060070029 | Laborczfalvi et al. | Mar 2006 | A1 |
20060074837 | Braddy et al. | Apr 2006 | A1 |
20060178778 | Fuhlbrigge et al. | Aug 2006 | A1 |
20070106984 | Birk Olsen et al. | May 2007 | A1 |
20070192739 | Hunleth et al. | Aug 2007 | A1 |
20070240098 | Averett et al. | Oct 2007 | A1 |
20070254631 | Spooner | Nov 2007 | A1 |
20080033921 | Arrouye et al. | Feb 2008 | A1 |
20080162493 | Blohm et al. | Jul 2008 | A1 |
20080172720 | Botz et al. | Jul 2008 | A1 |
20080184157 | Selig | Jul 2008 | A1 |
20080189361 | Greschler et al. | Aug 2008 | A1 |
20090083707 | Fujita et al. | Mar 2009 | A1 |
20090115901 | Winter et al. | May 2009 | A1 |
20090210721 | Phillips | Aug 2009 | A1 |
20090235352 | Schrijen et al. | Sep 2009 | A1 |
20090249185 | Datar et al. | Oct 2009 | A1 |
20090254572 | Redlich et al. | Oct 2009 | A1 |
20090254580 | Laurion | Oct 2009 | A1 |
20090288135 | Chang et al. | Nov 2009 | A1 |
20100005529 | Hemade | Jan 2010 | A1 |
20100083173 | Germann et al. | Apr 2010 | A1 |
20100088234 | Moore et al. | Apr 2010 | A1 |
20100161762 | Saxena | Jun 2010 | A1 |
20100257578 | Shukla et al. | Oct 2010 | A1 |
20100274910 | Ghanaie-Sichanie et al. | Oct 2010 | A1 |
20100281528 | Hayton et al. | Nov 2010 | A1 |
20100287219 | Caso et al. | Nov 2010 | A1 |
20100325086 | Skinner et al. | Dec 2010 | A1 |
20100325199 | Park | Dec 2010 | A1 |
20110063410 | Robert | Mar 2011 | A1 |
20110066668 | Guarraci | Mar 2011 | A1 |
20110093507 | Pilip | Apr 2011 | A1 |
20110137979 | Seo et al. | Jun 2011 | A1 |
20110154290 | Kelly | Jun 2011 | A1 |
20110184993 | Chawla et al. | Jul 2011 | A1 |
20110202672 | Narayanaswamy et al. | Aug 2011 | A1 |
20110209045 | Ghosh | Aug 2011 | A1 |
20110231912 | Lee et al. | Sep 2011 | A1 |
20110247074 | Manring | Oct 2011 | A1 |
20110252038 | Schmidt et al. | Oct 2011 | A1 |
20110252071 | Cidon | Oct 2011 | A1 |
20110258535 | Adler, III et al. | Oct 2011 | A1 |
20120005159 | Wang et al. | Jan 2012 | A1 |
20120072465 | McGowan et al. | Mar 2012 | A1 |
20120084685 | Heynen et al. | Apr 2012 | A1 |
20120095878 | Feldman et al. | Apr 2012 | A1 |
20120099135 | Ono | Apr 2012 | A1 |
20120110646 | Ajitomi et al. | May 2012 | A1 |
20120117626 | Yates et al. | May 2012 | A1 |
20120136865 | Blom et al. | May 2012 | A1 |
20120144202 | Counterman | Jun 2012 | A1 |
20120144454 | Lee | Jun 2012 | A1 |
20120158668 | Tu et al. | Jun 2012 | A1 |
20120173612 | Vegesna-Venkata et al. | Jul 2012 | A1 |
20120179746 | Bolgert et al. | Jul 2012 | A1 |
20120192067 | DeLuca et al. | Jul 2012 | A1 |
20120254042 | Ludemann | Oct 2012 | A1 |
20120266229 | Simone et al. | Oct 2012 | A1 |
20130018904 | Mankala et al. | Jan 2013 | A1 |
20130036455 | Bodi et al. | Feb 2013 | A1 |
20130054356 | Richman et al. | Feb 2013 | A1 |
20130086670 | Vangpat et al. | Apr 2013 | A1 |
20130111336 | Dorman et al. | May 2013 | A1 |
20130124606 | Carpenter et al. | May 2013 | A1 |
20130144934 | Swett et al. | Jun 2013 | A1 |
20130150163 | Radek et al. | Jun 2013 | A1 |
20130282752 | Day-Richter et al. | Oct 2013 | A1 |
20130282755 | Procopio et al. | Oct 2013 | A1 |
20130304797 | Warren et al. | Nov 2013 | A1 |
20140074712 | Palmer et al. | Mar 2014 | A1 |
Number | Date | Country |
---|---|---|
10-2010-0137323 | Dec 2010 | KR |
10-2012-0010397 | Feb 2012 | KR |
10-2012-0065072 | Jun 2012 | KR |
10-2013-0007459 | Jan 2013 | KR |
WO-0135211 | May 2001 | WO |
WO-2010054374 | May 2010 | WO |
Entry |
---|
Beresford et al., “MockDroid: Trading Privacy for Application Functionality on Smartphones,” HotMobile '11, Mar. 1-3, 2011, Phoenix, AZ, USA, pp. 49-54. |
Bibi et al., “A Platform for Delivering Multimedia Presentations on Cultural Heritage,” 2010 14th Panhellenic Conference on Informatics, pp. 175-179. |
Ellis et al., “Concurrency Control in Groupware Systems,” ACM 1989, pp. 399-407. |
Guo et al., “Building the PolarGrid Portal Using Web 2.0 and OpenSocial,” SC '09, Nov. 14-20, 2009, Portland, Oregon, USA; 8 pages. |
http://web.archive.org/web/20110629120453/https://developer.mozilla.org/en/Setting—up—extension—development—environment, Jun. 29, 2011, printed Jan. 9, 2015, 5 pages. |
http://web.archive.org/web/20111006093926/https://addons.mozilla.org/en-US/firefox/extensions/?sort=featured, Oct. 6, 2011, printed Oct. 26, 2014, 9 pages. |
http://web.archive.org/web/20111219132014/https://addons.mozilla.org/en-US/seamon key, Dec. 19, 2011, printed Oct. 26, 2014, 5 pages. |
http://web.archive.org/web/20120512130530/https://developermozilla.org/en/Setting—up—extension—development— environment, May 12, 2012, 7 pages. |
http://web.archive.org/web/20120819143535/https://addons.mozilla.org/en-US/firefox/extensions/?sort=featured, Aug. 19, 2012, printed Dec. 13, 2013, 3 pages. |
http://web.archive.org/web/20121020134710/https://addons.mozilla.org/en-US/seamonkey/extensions, Oct. 20, 2012, printed Dec. 13, 2013, 3 pages. |
http://web.archive.org/web/20121021135356/http://support.mozilla.org/en-US/kb/find-and-install-add-ons-add-features-to-firefox, Oct. 21, 2012, printed Dec. 13, 2013, 3 pages. |
http://web.archive.org/web20111226173518/http://en.wikipedia.org/wiki/Add-on—(Mozilla), Dec. 26, 2011, printed Oct. 26, 2014, 5 pages. |
http://www-archive.mozilla.org/projects/webservices/, snapshot taken Apr. 21, 2008, printed Dec. 13, 2013, 4 pages. |
https://addons.mozilla.org/en-US/firefox/addon/extension-manager-extended/, printed Oct. 26, 2014, 2 pages. |
https://addons.mozilla.org/En-us/seamonkey/addon/gmail-smime/?src=search, printed Dec. 13, 2013, 2 pages. |
International Search Report and Written Opinion for PCT/US2014/029756 dated Jul. 28, 2014, 11 pages. |
International Search Report and Written Opinion for PCT/US2013/047877 dated Oct. 31, 2013, 9 pages. |
International Search Report and Written Opinion for PCT/US2013/037701 dated Jun. 26, 2013, 10 pages. |
International Search Report and Written Opinion for PCT/US2013/037773 dated Aug. 21, 2013, 13 pages. |
Mayer et al., “Third-Party Web Tracking: Policy and Technology,” Proceedings of the 2012 IEEE Symposium on Security and Privacy, pp. 413-427, May 20-23, 2012. |
Nauman et al., “Apex: Extending Android Permission Model and Enforcement with User-Defined Runtime Constraints,” ASIACCS '10, Apr. 13-16, 2010, Beijing, China, pp. 328-332. |
Nichols et al., “High-Latency, Low-Bandwidth Windowing in the Jupiter Collaboration System,” UIST '95. 8th Annual Symposium on User Interface Software and Technology. Proceedings of the ACM Symposium on User Interface Software and Technology, Nov. 14-17, 1995, pp. 111-120. |
The Oauth 2.0 Authorization Protocol; draft ietf-oauth-v2-24; Mar. 8, 2012, 44 pages. |
Zhou et al., “Taming Information-Stealing Smartphone Applications (on Android),” TRUST 2011, LNCS 6740, pp. 93-107, 2011. |
Zissis et al., “Addressing Cloud Computing Security Issues,” Future Generation Computer Systems 28 (2012) 583-592. |
PCT/US2014/032167 International Search Report mailed Jul. 30, 2014. |
Number | Date | Country | |
---|---|---|---|
20140297700 A1 | Oct 2014 | US |
Number | Date | Country | |
---|---|---|---|
61806079 | Mar 2013 | US |