WO2017001938A1 - Objects management - Google Patents

Objects management Download PDF

Info

Publication number
WO2017001938A1
WO2017001938A1 PCT/IB2016/050520 IB2016050520W WO2017001938A1 WO 2017001938 A1 WO2017001938 A1 WO 2017001938A1 IB 2016050520 W IB2016050520 W IB 2016050520W WO 2017001938 A1 WO2017001938 A1 WO 2017001938A1
Authority
WO
WIPO (PCT)
Prior art keywords
requester
action
permission
execution
request
Prior art date
Application number
PCT/IB2016/050520
Other languages
French (fr)
Inventor
Aleksandr Aleksandrovich ZINCHUK
Original Assignee
Yandex Europe Ag
Yandex Llc
Yandex Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yandex Europe Ag, Yandex Llc, Yandex Inc. filed Critical Yandex Europe Ag
Publication of WO2017001938A1 publication Critical patent/WO2017001938A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory

Definitions

  • the present technology relates to application programming interface (API) solutions in general and specifically to a system and method for managing objects within an API solution.
  • API application programming interface
  • Various global or local communications networks offer a user a vast amount of information.
  • the information includes a multitude of contextual topics, such as but not limited to, news and current affairs, maps, company information, financial information and resources, traffic information, games and entertainment-related information.
  • Users use a variety of electronic devices (desktop computers, laptop computers, notebooks, smartphones, tablets, and the like) to have access to rich content (such as images, audio, video, animation, and other multimedia content from such networks).
  • rich content such as images, audio, video, animation, and other multimedia content from such networks.
  • software programs have grown in size and number, and the need for different programs to operate cooperatively has increased.
  • API application program interface
  • GUI graphical user interface
  • object-oriented programming in which programmers define not only the data type of a data structure, but also the types of operations (functions) that can be applied to the data structure. In this way, the data structure becomes an object that includes both data and functions.
  • an "object” is any item that can be individually selected and manipulated. This can include shapes and pictures that appear on a display screen as well as less tangible software entities.
  • object-oriented programming for example, an object is a self-contained entity that consists of both data and procedures to manipulate the data.
  • Object- oriented programming techniques enable programmers to create modules that do not need to be changed when a new type of object is added, as a programmer can simply create a new object that inherits many of its features from existing objects, making object-oriented programs easier to modify.
  • programmers can create relationships between one object and another. For example, objects can inherit characteristics from other objects.
  • objects can inherit characteristics from other objects.
  • U.S. Patent No. 6,993,665 (Heddings et al.) teaches methods and apparatus for providing a permissions manager capable of assisting an applet, for example, in determination and/or grant of the permissions required for an operation.
  • An apparatus for managing permissions is disclosed, the apparatus including a software application, a permissions manager coupled to the software application and receiving a request sent by the software application, and a programming environment coupled to the permissions manager.
  • the request may indicate a permission, which may be requested by the permissions manager.
  • the permissions manager may access the programming environment to determine a required permission corresponding to the permission and to determine how to grant the required permission.
  • PCT Application Publication No. WO 94/23362 Al discloses an object oriented programming environment.
  • the environment includes a plurality of classes and objects. Each object communicates with other objects in the environment by sending messages which invoke methods in these other objects.
  • the environment contains at least one target object which contains one or more universal methods used for communicating with another object. These universal methods are typically included in all of the target objects in the environment, along with associated universal instance variables used by the universal methods, thereby forming a universal protocol or interface to target objects.
  • Behavior objects objects that implement the behavior of other objects, obtain and modify properties of the target object by directly invoking the universal methods residing in the target object.
  • Mediator patterns to define an object that encapsulates how a set of objects interact have been described. With the mediator pattern, communication between objects is encapsulated with a mediator object. Objects no longer communicate directly with each other, but instead communicate through the mediator. This reduces the dependencies between communicating objects, thereby lowering the coupling ⁇ see, e.g., "Mediator Pattern.”
  • implementations of the present technology provide a method for managing permissions for objects, the objects executable by a server as part of a software routine, the method executable at an electronic device (e.g., a client device, or the server).
  • the method comprises receiving a first request for a first object from a first requester, the first request including a request for execution of a first action with the first object, execution of the first action requiring a first permission.
  • the first permission for execution of the first action is granted to the first requester, and the first requester thereby captures the first object.
  • a second request for the first object is received from a second requester, the second request including a request for execution of a second action with the first object, execution of the second action requiring a second permission.
  • the second request is sent to the first requester, the first requester having captured the first object.
  • One of the following is then executed: the first requester grants the second permission to the second requester, allowing execution of the second action by the second requester, the second requester thereby capturing the first object, and terminating the first permission and the first action execution with the first requester; or, the first requester does not grant the second permission to the second requester, not allowing execution of the second action by the second requester, the first requester maintaining capture of the first object.
  • the first requester responsive to the first requester granting the second permission to the second requester and allowing execution of the second action by the second requester, the first requester nevertheless maintains capture of the first object.
  • the first action and the second action are the same. In alternative implementations, the first action and the second action are different. In some implementations, the second action comprises both the first action and an additional action.
  • the first requester may partially grant the second permission to the second requester, allowing execution of part of the second action by the second requester. For example, the first requester may partially grant the second permission to the second requester by allowing execution of the first action by the second requester and not allowing execution of the additional action by the second requester. In an alternative embodiment, the first requester may allow execution of the additional action by the second requester and not allow execution of the first action by the second requester. In implementations where permission is partially granted to the second requester, the first requester maintains capture of the first object partially, the second requestor capturing the part of the second action for which it is granted permission and for which execution is allowed.
  • the first object comprises a user interface element, a pointer, an audio object, an image object, a video object, or a text object.
  • user interface elements include text boxes, tool bars, menu bars, hyperlinks, and buttons.
  • the first object may be a pop-up object.
  • the first action, the second action, and the additional action comprise, independently, one or more of: showing the first object, allowing the first object to pop up, entering text into the first object, inputting data or information into the first object, clicking on the first object, selecting the first object, selecting a portion of the first object, and deleting the first object.
  • implementations of the present technology provide an electronic device associated with a user, the electronic device comprising a communication interface for communication with a server via a communication network, the server being configured to execute objects as part of a software routine; and a processor operationally connected with the communication interface.
  • the processor is further configured to receive a first request for a first object from a first requester, the first request including a request for execution of a first action with the first object, execution of the first action requiring a first permission.
  • the processor is configured to grant the first permission for execution of the first action to the first requester, the first requester thereby capturing the first object.
  • the processor is further configured to receive a second request for the first object from a second requester, the second request including a request for execution of a second action with the first object, execution of the second action requiring a second permission.
  • the processor is configured to send the second request to the first requester, the first requester having captured the first object, and to execute one of the following: 1) responsive to the first requester granting the second permission to the second requester, the processor is configured to allow execution of the second action by the second requester, the second requester thereby capturing the first object, and to terminate the first permission and the first action execution with the first requester; or, 2) responsive to the first requester not granting the second permission to the second requester, the processor is configured to not allow execution of the second action by the second requester, the first requester maintaining capture of the first object. [17] In some implementations of the electronic device, responsive to the first requester granting the second permission to the second requester and execution of the second action by the second requester being allowed, the first requester maintains
  • the first action and the second action are the same. In alternative implementations of the electronic device, the first action and the second action are different. In some implementations of the electronic device, the second action comprises both the first action and an additional action, and the first requester partially grants the second permission to the second requester such that execution of part of the second action by the second requester is allowed. For example, in some implementations, the first requester partially grants the second permission to the second requester by allowing execution of the first action by the second requester and not allowing execution of the additional action by the second requester.
  • the first requester partially grants the second permission to the second requester by allowing execution of the additional action by the second requester and not allowing execution of the first action by the second requester.
  • the first requester maintains capture of the first object partially, the second requestor capturing the part of the second action for which it is granted permission and for which execution is allowed.
  • the first object comprises a user interface element, a pointer, an audio object, an image object, a video object, or a text object.
  • user interface elements include text boxes, tool bars, menu bars, hyperlinks, and buttons.
  • the first object is a pop-up object.
  • the first action, the second action, and the additional action comprise, independently, one or more of: showing the first object, allowing the first object to pop up, entering text into the first object, inputting data or information into the first object, clicking on the first object, selecting the first object, selecting a portion of the first object, and deleting the first object.
  • a "server” is a computer program that is running on appropriate hardware and is capable of receiving requests (e.g., from electronic devices) over a network (e.g., a communication network), and carrying out those requests, or causing those requests to be carried out.
  • the hardware may be one physical computer or one physical computer system, but neither is required to be the case with respect to the present technology.
  • a "server” is not intended to mean that every task (e.g., received instructions or requests) or any particular task will have been received, carried out, or caused to be carried out, by the same server (i.e., the same software and/or hardware); it is intended to mean that any number of software elements or hardware devices may be involved in receiving/sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request; and all of this software and hardware may be one server or multiple servers, both of which are included within the expressions "at least one server” and "a server”.
  • electronic device is any computing apparatus or computer hardware that is capable of running software appropriate to the relevant task at hand.
  • electronic devices include general purpose personal computers (desktops, laptops, netbooks, etc.), mobile computing devices, smartphones, and tablets, and network equipment such as routers, switches, and gateways.
  • network equipment such as routers, switches, and gateways.
  • an electronic device in the present context is not precluded from acting as a server to other electronic devices.
  • the use of the expression “an electronic device” does not preclude multiple electronic devices being used in receiving/sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request, or steps of any method described herein.
  • a “client device” refers to any of a range of end-user client electronic devices, associated with a user, such as personal computers, tablets, smartphones, and the like.
  • a “database” is any structured collection of data, irrespective of its particular structure, the database management software, or the computer hardware on which the data is stored, implemented or otherwise rendered available for use.
  • a database may reside on the same hardware as the process that stores or makes use of the information stored in the database or it may reside on separate hardware, such as a dedicated server or plurality of servers.
  • data includes information of any nature or kind whatsoever capable of being stored, for example, in a database, or transmitted electronically, for example, in a stream.
  • data includes, but is not limited to audio-visual works (images, movies, sound recordings, presentations etc.), location data, numerical data, etc., text (opinions, comments, questions, messages, etc.), documents, spreadsheets, etc.
  • computer usable information storage medium is intended to include media of any nature and kind whatsoever.
  • Computer storage media can include volatile and non- volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer- readable instructions, data structures, program modules, or other data.
  • Computer storage media can include, but is not limited to, random access memory (RAM), read only memory (ROM), electrically erasable programmable ROM (EEPROM), flash memory, or other memory technology, compact disk ROMs (CD-ROMs), digital versatile disks (DVDs) or other optical storage, floppy disks, hard drives, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, USB keys, solid state -drives, tape drives, or any other medium that can be used to store the desired information and that can be accessed to retrieve that information.
  • RAM random access memory
  • ROM read only memory
  • EEPROM electrically erasable programmable ROM
  • flash memory or other memory technology
  • CD-ROMs compact disk ROMs
  • DVDs digital versatile disks
  • floppy disks hard drives
  • magnetic cassettes magnetic tape
  • magnetic disk storage or other magnetic storage devices USB keys
  • solid state -drives solid state -drives
  • tape drives or any other medium that can be used to store the desired information and that can be
  • the expression "communication network” is intended to include a telecommunications network such as a computer network, the Internet, a telephone network, a Telex network, a TCP/IP data network (e.g., a WAN network, a LAN network, etc.), and the like.
  • the term "communication network” includes a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared and other wireless media, as well as combinations of any of the above.
  • the signals can be sent and received, without limitation, using optical means (such as an optical connection), electronic means (such as using a wired or wireless connection), and mechanical means (such as pressure-based, temperature based or any other suitable physical parameter based).
  • optical means such as an optical connection
  • electronic means such as using a wired or wireless connection
  • mechanical means such as pressure-based, temperature based or any other suitable physical parameter based
  • cloud storage service is intended to include computing facilities where multiple clients, client devices, communities, IT domains, and/or applications are managed or administrated separately in a multi-tenant- environment.
  • a "cloud” environment relates to a structure wherein multiple independent users share a common set of infrastructure, platforms, services/applications, or resources in a manner that isolates them from each other securely.
  • a user/client may be a company, an organization, or a private person, and a client device may refer to any of a range of end-user client devices, as described herein.
  • Such a cloud service provides connectivity to be used, for example, by personal computers, tablets, smart phones, or other end user-connected devices (home entertainment, etc.).
  • a cloud service may comprise decoupled administration models applicable to server blades in a data center, or any distribution of connected devices.
  • the common set of infrastructure, platforms, services/applications, or resources is typically managed by an administrator, which manages and maintains the cloud service.
  • Cloud-based resources may be public or private.
  • Implementations of the present technology each have at least one of the above- mentioned object and/or aspects, but do not necessarily have all of them. It should be understood that some aspects of the present technology that have resulted from attempting to attain the above-mentioned object may not satisfy this object and/or may satisfy other objects not specifically recited herein.
  • Figure 1 is a schematic diagram depicting a system, the system being implemented in accordance with non-limiting embodiments of the present technology.
  • Figure 2 depicts a screen shot, the screen shot illustrating a graphical user interface displaying a street map and associated program objects.
  • Figure 3 is a block diagram depicting a method, the method being implemented within the system of Figure 1 and being implemented according with non-limiting embodiments of the present technology.
  • FIG. 1 there is shown a schematic diagram of a system 100, the system 100 being suitable for implementing non-limiting embodiments of the present technology.
  • the system 100 as depicted is merely an illustrative implementation of the present technology.
  • the description thereof that follows is intended to be only a description of illustrative examples of the present technology. This description is not intended to define the scope or set forth the bounds of the present technology.
  • what are believed to be helpful examples of modifications to the system 100 may also be set forth below. This is done merely as an aid to understanding, and, again, not to define the scope or set forth the bounds of the present technology.
  • the system 100 comprises a communication network 50.
  • the communication network 50 is typically associated with an electronic device 20 and a server 40, the server 40 being associated with a data storage device 30 which stores program code for programs 10, 15.
  • the implementation of the server 40 is not particularly limited, but as an example, the server 40 may be implemented as a single server. Alternatively, the server 40 can be implemented as a plurality of servers.
  • the implementation of the data storage device 30 is not particularly limited. As an example, the data storage device 30 can be a memory device such as a hard disk (not depicted) integrated with the electronic device 20, or the data storage device 30 can be connected to the electronic device 20 via the communication network 50 or, indeed, via any suitable wired or wireless connection.
  • the data storage device 30 is typically a unit capable of storing files and data such as program code for programs 10, 15. Like the server 40, the data storage device 30 may be implemented as a single unit, or alternatively as a plurality of units.
  • each of the plurality of data storage devices implementing data storage device 30 may be responsible for storing files from users in a particular region; or a particular type of users; or a particular type or size of files.
  • each of the plurality of data storage devices implementing the data storage device 30 may be configured to store files and data according to a load-balancing approach executed by a supervisory entity (which can be, for example, the server 40 or one of the plurality of servers).
  • the data storage device 30 may be physically contiguous with the server 40, i.e., they are not necessarily separate pieces of hardware, as depicted, although they may be.
  • the data storage device 30 and/or the server 40 can be implemented in a cloud environment, for example as part of a cloud storage service.
  • the implementation of the electronic device 20 is also not particularly limited.
  • the electronic device may be any computing apparatus that is capable of running software appropriate to the relevant task at hand, such as without limitation: general purpose personal computers (desktops, laptops, netbooks, etc.), mobile computing devices, smartphones, and tablets, and network equipment such as routers, switches, and gateways.
  • Electronic device 20 includes a processor or central processing unit (CPU) 22 and a memory unit 25.
  • CPU central processing unit
  • FIG. 1 a single electronic device 20 is depicted in the illustrative example shown in Figure 1 , multiple electronic devices may be used in receiving/sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request, or steps of any method described herein.
  • electronic device 20 is not precluded from acting as the server 40 to other electronic devices (not depicted).
  • the server 40 may be physically contiguous with the electronic device 20, i.e., they are not necessarily separate pieces of hardware, as depicted, although they may be.
  • An instance 11 of the program 10 is loaded within an address space in memory 25 of the electronic device 20.
  • Implementation of the memory 25 is not particularly limited.
  • the memory 25 can comprise a virtual memory system with physical storage separate from the address space, but for the purposes of simplicity, the memory is shown in Figure 1 as a simple block 25.
  • the instance 11 of the program is particularly arranged to in turn instantiate a number of program objects 12-1, 12-2 to 12-N (not depicted) (together referred to as program objects 12).
  • Program objects can comprise a combination of executable code as well as data and so can either perform processing themselves and/or provide data for other program objects to process.
  • a program object such as a function or sub-routine might be instantiated by a parent object or even a main program to perform some processing on behalf of the calling parent object or main program.
  • Object data can comprise a variety of types comprising, for example: primitive data types such as integers, real numbers, Boolean, characters; and structured or abstract data types such as arrays or lists and user-defined data types, each including multiple instances of data or combinations of data types.
  • primitive data types such as integers, real numbers, Boolean, characters
  • structured or abstract data types such as arrays or lists and user-defined data types, each including multiple instances of data or combinations of data types.
  • program objects can comprise instances of functions created during execution of the program instance 11 or simple or structured data objects some of which can comprise pointer values, with those pointers pointing to other functions or data.
  • Program objects 12 are typically arranged hierarchically with parent objects causing the instantiation of one or more child objects. For ease of understanding, only one layer of child objects is illustrated in Figure 1 with objects 12-1, 12-2 to 12-N (not depicted) having been instantiated by the instance of program 10. It will be appreciated however that in a program of even moderate complexity, the object hierarchy can comprise many layers of objects.
  • Program objects 12 can be executed by the server 40 as part of a software routine, e.g., as part of programs 10, 15. It should be expressly understood that implementation of program objects 12 is not particularly limited. Non-limiting examples of program objects 12 include user interface elements (such as text boxes, tool bars, menu bars, hyperlinks, buttons, and the like), pointers, audio objects, image objects, video objects, and text objects. In some non- limiting implementations, program objects 12 may be pop-up objects. Non-limiting examples of pop-up objects include objects that appear on top of or over the browser window of a Web site. For example, a pop-up object may appear when an option is clicked or otherwise selected by a user.
  • user interface elements such as text boxes, tool bars, menu bars, hyperlinks, buttons, and the like
  • pointers such as text boxes, tool bars, menu bars, hyperlinks, buttons, and the like
  • audio objects such as text boxes, tool bars, menu bars, hyperlinks, buttons, and the like
  • program objects 12 may be pop-up objects.
  • pop-up objects
  • a pop-up object may appear when a user places a cursor (e.g., by pointing with a mouse) over a portion of a browser window or Web site.
  • a cursor e.g., by pointing with a mouse
  • Many implementations of pop-up objects may be used as is known by those of skill in the art.
  • a communication network 50 is implemented is not particularly limited and will vary depending on how the electronic device 20, server 40, and data storage device 30 are implemented.
  • the communication network 50 can be implemented as the Internet.
  • the communication network 50 can be implemented differently, such as any wide-area communications network, local-area communications network, a private communications network and the like.
  • the communication network 50 can be implemented as a wireless data transmittal path (such as but not limited to, a 3G communications network link, a 4G communications network link, a Wireless Fidelity, or WiFi® for short, a Bluetooth®, and the like).
  • the communication network 50 can be either wireless (such as Wireless Fidelity, or WiFi® for short, Bluetooth® or the like) or wired (such as an Ethernet based connection).
  • Different electronic devices and different communication networks may be implemented independently of each other.
  • Figure 2 depicts a screen shot 200 of a GUI displaying a street map 260 to a user (not depicted), the street map 260 indicating the location of an address 250 to the user.
  • Figure 2 is for illustration purposes only to assist in understanding of the present technology. It should also be understood that Figure 2 contains a multitude of information, only relevant portions of which will be enumerated and described.
  • Implementation of the screen shot 200 is not particularly limited. In one non-limiting example, the screen shot 200 may be displayed by a browser application (not depicted) or opened using an internet browser (not depicted).
  • the screen shot 200 shows a data-entry object 210, in which the user (not depicted) has entered the address 250
  • address 1 for which the user is searching; a button object 220, on which the user can click to initiate display of the address 250 entered in the data-entry object 210; a second button object 230; and a pointer object 240, indicating location of the address 250 on the street map 260.
  • the user can click on the terms therein ("hotels", "restaurants"), to initiate a search of nearby hotels or restaurants (hotels or restaurants located near the address 250). For example, if the user (not depicted) clicks on the term "hotels" in the second button object 230, then a new object (not depicted) may appear, the new object pointing to a hotel located near the address 250.
  • other objects may also be removed in response to the user clicking on the term "hotels" in the second button object 230. For example, responsive to the user clicking on the term "hotels" in the second button object 230 and the new object (not depicted) appearing, the pointer object 240 and the data-entry object 210 may be removed.
  • a user may access a web site associated with map or location services.
  • the Yandex Maps service can be accessed by typing in an URL (such as
  • a client device may be, for example, executing a Yandex browser application.
  • a Yandex Map application also referred to as an "app”
  • an API for Yandex Maps may have been installed on a web app or site, and the user may access the map services through the API on the web app or site.
  • Other implementations are possible, as is known by the skilled person in the art.
  • Step 302 receiving a first request for a first object from a first requester, the first request including a request for execution of a first action with the first object, execution of the first action requiring a first permission
  • the method 300 begins at step 302, where the processor 22 of electronic device 20 receives a first request (not depicted) for a first object 12-1 from the server 40, the first request including a request for execution of a first action (not depicted) with the first object 12-1, execution of the first action requiring a first permission (not depicted).
  • the first request is received from the program 10 via the server 40 and the communication network 50.
  • the first request is received from the instance 11 of program 10 loaded within memory 25 of the electronic device 20.
  • the first request may be received from the processor 22 of the electronic device 20.
  • Implementation of the first object 12-1 is not particularly limited. Referring to the illustrative embodiment depicted in Figure 2, the first object 12-1 may be considered, for the purposes of illustration, to be the pointer object 240. It should be noted that many other implementations are possible. For example, in alternative embodiments, the first object 12-1 could be considered to be the data-entry object 210, the button object 220, or the second button object 230. For ease of illustration, we consider the embodiment where the first object 12-1 is the pointer object 240.
  • the first request includes a request for execution of a first action with the first object 12-1.
  • Implementation of the first action is not particularly limited. As is known in the art, many operations and functions may be executed in association with, or by, the program objects 12. Non-limiting examples of such actions include showing or displaying an object, e.g., on a GUI; allowing an object to pop up; entering text into an object; inputting data or information into an object; clicking on an object; selecting an object; selecting a portion of an object; and deleting an object.
  • the first request for the first object 12-1 includes a request to display the pointer object 240 on the street map 260 at the location of address 250.
  • the first requester in this example is program 10 (or instance 11 of program 10), which corresponds for purposes of illustration to an app for maps (such as Yandex Maps).
  • a first request for a first object from a first requester has been received.
  • the first request requires a first permission (not depicted).
  • the first requester has requested permission to execute the first action with the first object.
  • the app for maps requests permission to display the pointer object 240 on the street map 260 at the location of address 250, the user having entered the address 250 in the data-entry object 210 and clicked on the button object 220 to initiate display of the address 250.
  • step 304 In response to the first request having been received, the first permission for execution of the first action is granted to the first requester.
  • the operating system (not depicted) of the electronic device 20 includes a central permissions manager (not depicted) that determines permissions within and throughout the system of the electronic device 20.
  • step 304 the first request having been received by the central permissions manager, the first permission for execution of the first action to the first requester is granted by the central permissions manager.
  • permission to display the pointer object 240 on the street map 260 at the location of address 250 is granted to the first requester by the central permissions manager (not depicted) of electronic device 20.
  • the pointer object 240 will thus be displayed on the street map 260 at the location of address 250, e.g., on the GUI (not depicted) of the electronic device 20.
  • the first requester having been granted the first permission by the central permissions manager (not depicted) of electronic device 20, the first requester thereby captures the first object 12-1 (the pointer object 240 in this example).
  • capture of a given object refers to taking control of permissions for the given object.
  • the central permissions manager (not depicted) of electronic device 20 determined permissions for the first object 12-1
  • the first requester acquires control of permissions for the first object 12-1 from the central permissions manager. Going forward, for as long as the first requester maintains capture of the first object 12-1, it will be the first requester that grants/does not grant subsequent requests for permission to execute actions with the first object 12-1.
  • perrmssions are determined (granted/not granted) in accordance with predetermined rules.
  • the entity controlling permissions (such as the central permissions manager of the electronic device 20, the first requester, or the entity capturing the first object 12-1) will determine permissions for objects 12 in accordance with preset rules.
  • the central permissions manager, the API, and/or the program in question may each follow a set of predetermined rules and procedures, as will be understood by those of skill in the art.
  • Implementation of capture by the first requester is not particularly limited.
  • an object-associated permissions manager distinct from the central permissions manager but associated with it, becomes associated with the first requester. Subsequent requests relating to the first object 12-1 are then sent from the central permissions manager to the object-associated permissions manager associated with the first requester, which determines permissions for the first object 12-1. If another requester captures the first object 12-1, then the object-associated permissions manager becomes associated with the other requester, and so on. If no request has been made and no requester has captured the first object 12-1, then the object-associated perrmssions manager remains associated with the central permissions manager.
  • Step 306 receiving a second request for the first object from a second requester, the second request including a request for execution of a second action with the first object, execution of the second action requiring a second permission
  • step 306 a second request (not depicted) for the first object 12-1 is received from a second requester (not depicted), the second request including a request for execution of a second action (not depicted) with the first object 12-1, execution of the second action requiring a second permission (not depicted).
  • the central permissions manager (not depicted) of electronic device 20 receives the second request for the first object 12-1 from the server 40.
  • the second request is received from the second requester via the server 40 and the communication network 50.
  • the second requester is located within memory 25 of the electronic device 20, and the second request is received from the processor 22 of the electronic device 20 via the central permissions manager.
  • Implementation of the second action is not particularly limited. It should be expressly understood that the second action may or may not be the same as the first action, i.e., the first action and the second action may be the same or different. With reference to the embodiment illustrated in Figure 2, the first action and the second action may both be displaying the pointer object 240 on the street map 260.
  • the second request from the second requester may be a request to display the pointer object 240 on the street map 260 at a second location (not depicted), distinct from the first location corresponding to address 250.
  • the second request from the second requester may be different from the first request to display the pointer object 240, being a request to modify the appearance of the pointer object 240, for example by changing its color or size or attaching a second object (such as a text box) to it.
  • the second action may include both the first action and an additional action.
  • the second request from the second requester may be a request to display the pointer object 240 on the street map 260 at a second location as well as a request to modify the appearance of the pointer object 240. Many such implementations are possible, as is known to those of skill in the art.
  • Implementation of the second requester is also not particularly limited.
  • the first requester and the second requester are separate entities.
  • the first requester is program 10 (or instance 11 of program 10), corresponding in the embodiment illustrated in Figure 2 to an app for maps (such as Yandex Maps).
  • the second requester is program 15 (or an instance (not depicted) of program 15 loaded within an address space in memory 25 of the electronic device 20).
  • Program 15 is separate from program 10.
  • program 10 (the first requester) is Yandex Maps
  • program 15 (the second requester) may be Sky Maps, an app that displays star charts, constellations, and other celestial objects.
  • the second requester, program 15 (Sky Maps) may request permission to display the pointer object 240 on a star chart (not depicted) in response to a user request.
  • first requester, program 10, and the second requester, program 15, are illustrated in Figure 1 as separate entities, the first requester and the second requester do not need to be separate entities.
  • the first requester and the second requester may be the same, i.e., the first request and the second request are made by the same program.
  • the first requester is program 10 (or instance 11 of program 10), corresponding to Yandex Maps, Yandex Maps having requested permission to display the pointer object 240 on the street map 260 at address 250.
  • the second request is received from Yandex Maps, the second request including a request to display the pointer object 240 at the location of the second address.
  • Yandex Maps Many such implementations are possible.
  • Step 308 - in response to the second request, sending the second request to the first requester, the first requester having captured the first object
  • step 308 in response to receiving the second request, the second request is sent to the first requester by the central permissions manager, the first requester having captured the first object 12-1.
  • the central permissions manager may send the second request to an object-associated permissions manager.
  • the object-associated permissions manager having become associated with the first requester.
  • Implementation of capture by the first requester is not particularly limited.
  • an object-associated permissions manager distinct from the central permissions manager but associated with it, becomes associated with the first requester. Subsequent requests relating to the first object 12-1 are then sent from the central permissions manager to the object-associated permissions manager associated with the first requester, which determines permissions for the first object 12-1. If another requester captures the first object 12-1, then the object-associated permissions manager becomes associated with the other requester, and so on. If no request has been made and no requester has captured the first object 12-1, then the object-associated permissions manager remains associated with the central permissions manager.
  • the processor 22 of the electronic device 20 sends the second request to the first requester (program 10, in the example described above) to determine the permission for the second request.
  • Step 310 responsive to the first requester granting the second permission to the second requester, allowing execution of the second action by the second requester, the second requester thereby capturing the first object, and terminating the first permission and the first action execution with the first requester
  • Step 312 responsive to the first requester not granting the second permission to the second requester, not allowing execution of the second action by the second requester, the first requester maintaining capture of the first object
  • step 310 If the first requester grants the second permission to the second requester, the method continues with step 310, such that execution of the second action by the second requester is allowed.
  • the second requester thereby captures the first object 12-1, and the first permission and first action execution by the first requestor are terminated.
  • the first requester is program 10 (or instance 11 of program 10), corresponding to Yandex Maps, Yandex Maps having requested (and been granted) permission to display the pointer object 240 on the street map 260 at address 250.
  • the second request has been received from the second requester (also Yandex Maps in this example), the second request including a request to display the pointer object 240 at the location of the second address (not depicted).
  • permission is granted to display the pointer object 240 on the street map 260 at the location of the second address.
  • the first permission and the first action execution by the first requester are terminated, i.e., the pointer object 240 is removed from address 250 (being displayed instead at the location of the second address).
  • the second requester captures the first object 12-1, i.e., captures control of permissions for the pointer object 240 going forward.
  • step 312 if the first requester does not grant the second permission to the second requester, the method continues with step 312, such that execution of the second action by the second requester is not allowed.
  • the pointer object 240 remains on the street map 260 at address 250, and the first requester maintains capture of the first object 12-1.
  • the first requester maintains capture of the first object 12-1, even though permission is granted to the second requester and execution of the second action by the second requester is allowed. For example, in the example described above, even though in step 310 permission is granted to the second requester to display the pointer object 240 on the street map 260 at the location of the second address, the first requester maintains capture of the first object 12-1, i.e., the first requester still determines permissions for the pointer object 240 going forward and the second requester does not capture control of permissions for the pointer object 240 going forward.
  • the first requester may partially grant the second permission to the second requester, allowing execution of part of the second action by the second requester.
  • the second request from the second requester is a request to display the pointer object 240 on the street map 260 at a second location as well as a request to modify the appearance of the pointer object 240
  • the first requester may grant permission to the second requester to display the pointer object 240 on the street map 260 at the second location, but may not grant permission to modify the appearance of the pointer object 240.
  • the first requester may grant permission to the second requester to modify the appearance of the pointer object 240, but not to display the pointer object 240 on the street map 260 at the second location.
  • the first requester may maintain capture of the first object 12-1 (pointer object 240 in this example) completely, partially, or not at all (i.e., the second requester captures the first object 12-1).
  • the second requester captures the first object 12-1 partially, control of permissions then being shared between the first requester and the second requester.
  • the second requester captures the first object 12-1 with respect to the part of the second action for which it has been granted permission and for which execution has been allowed, the first requester maintaining capture of the first object 12-1 with respect to the part of the second action for which it did not grant permission to the second requester.
  • the second requester may capture control of permissions for displaying the pointer object 240, while the first requester maintains capture of permissions for modifying the appearance of the pointer object 240.
  • Many other permutations are possible as will be appreciated by those skilled in the art.
  • the first requester may grant the second permission to the second requester, allowing execution of the second action by the second requester, without terminating the first permission and the first action execution with the first requester.
  • the first requester may grant permission to the second requester to display a second pointer object (not depicted) on the street map 260 at the second location (not depicted), without terminating display of the pointer object 240 at the first location corresponding to address 250.
  • the first requester may or may not maintain capture of the first object 12-1 (the pointer object 240), i.e., the second requester may or may not capture the first object 12-1.
  • CLAUSE 1 A method for managing permissions for objects (12), the objects (12) executable by a server (40) as part of a software routine, the method executable at an electronic device (20), the method comprising:
  • CLAUSE 3 The method of clause 1, wherein the first action and the second action are different.
  • CLAUSE 4 The method of clause 3, wherein, in step e), responsive to the first requester granting the second permission to the second requester and allowing execution of the second action by the second requester, the first requester maintains capture of the first object (12-1).
  • CLAUSE 5 The method of clause 3 or 4, wherein the second action comprises both the first action and an additional action, and wherein the first requester granting the second permission to the second requester comprises the first requester partially granting the second permission to the second requester and allowing execution of part of the second action by the second requester.
  • CLAUSE 6. The method of clause 5, wherein the first requester partially granting the second permission to the second requester comprises the first requester allowing execution of the first action by the second requester and not allowing execution of the additional action by the second requester.
  • CLAUSE 7 The method of clause 5, wherein the first requester partially granting the second permission to the second requester comprises the first requester allowing execution of the additional action by the second requester and not allowing execution of the first action by the second requester.
  • CLAUSE 8 The method of any one of clauses 5 to 7, wherein the first requester maintains capture of the first object (12-1) partially, the second requestor capturing the part of the second action for which it is granted permission and for which execution is allowed.
  • CLAUSE 9 The method of any one of clauses 1 to 8, wherein the first object (12-1) comprises a user interface element, a pointer, an audio object, an image object, a video object, or a text object.
  • the user interface element comprises a text box, a tool bar, a menu bar, a hyperlink, or a button.
  • CLAUSE 11 The method of any one of clauses 1 to 10, wherein the first object (12-1) is a pop-up object.
  • An electronic device (20) associated with a user comprising: a communication interface for communication with a server (40) via a communication network (50), the server (40) being configured to execute objects (12) as part of a software routine; a processor (22) operationally connected with the communication interface, the processor (22) being further configured to: a) receive a first request for a first object (12-1) from a first requester, the first request including a request for execution of a first action with the first object (12-1), execution of the first action requiring a first permission; b) in response to said first request, grant the first permission for execution of the first action to the first requester, the first requester thereby capturing the first object (12-1); c) receive a second request for the first object (12-1) from a second requester, the second request including a request for execution of a second action with the first object (12-1), execution of the second action requiring a second permission; d) in response to said second request, send the second request
  • CLAUSE 16 The electronic device (20) of clause 14, wherein the first action and the second action are different.
  • CLAUSE 17 The electronic device (20) of clause 16, wherein, in step e), responsive to the first requester granting the second permission to the second requester and execution of the second action by the second requester being allowed, the first requester maintains capture of the first object (12-1).
  • CLAUSE 18 The electronic device of clause 16 or 17, wherein the second action comprises both the first action and an additional action, and wherein the first requester granting the second permission to the second requester comprises the first requester partially granting the second permission to the second requester such that execution of part of the second action by the second requester is allowed.
  • CLAUSE 19 The electronic device of clause 18, wherein the first requester partially granting the second permission to the second requester comprises the first requester allowing execution of the first action by the second requester and not allowing execution of the additional action by the second requester.
  • CLAUSE 20 The electronic device of clause 18, wherein the first requester partially granting the second permission to the second requester comprises the first requester allowing execution of the additional action by the second requester and not allowing execution of the first action by the second requester.
  • CLAUSE 21 The electronic device of any one of clauses 18 to 20, wherein the first requester maintains capture of the first object (12-1) partially, the second requestor capturing the part of the second action for which it is granted permission and for which execution is allowed.
  • CLAUSE 22 The electronic device of any one of clauses 14 to 21, wherein the first object (12-1) comprises a user interface element, a pointer, an audio object, an image object, a video object, or a text object.
  • the user interface element comprises a text box, a tool bar, a menu bar, a hyperlink, or a button.
  • CLAUSE 24 The electronic device of any one of clauses 14 to 23, wherein the first object (12-1) is a pop-up object.
  • CLAUSE 25 The electronic device of any one of clauses 17 to 20, wherein the first action, the second action, and the additional action comprise, independently, one or more of: showing the first object (12-1), allowing the first object (12-1) to pop up, entering text into the first object (12-1), inputting data or information into the first object (12-1), clicking on the first object (12-1), selecting the first object (12-1), selecting a portion of the first object (12- 1), and deleting the first object (12-1).
  • CLAUSE 26 The electronic device of any one of clauses 14 to 25, wherein the electronic device is a client device or the server (40).
  • Some technical effects of non-limiting embodiments of the present technology may include provision of a decentralized objects management, where a central permissions manager is not responsible for determining permissions for objects in all instances.
  • This provision of objects management may be more efficient, quicker, require less processing, reduce the burden on the processor, reduce memory or RAM usage, and/or reduce energy consumption by an electronic device.
  • the electronic device 20 is implemented as a wireless communication device, ability to reduce energy consumption would result in conservation of battery power of the electronic device 20.
  • embodiments of the present technology may be implemented without the user enjoying some of these technical effects, while other embodiments may be implemented with the user enjoying other technical effects or none at all.

Abstract

There are provided a method and a system for managing permissions for objects, the objects executable by a server as part of a software routine. The method can be executed at an electronic device. The method comprises receiving a request for an object from a first requester, the request for execution of an action with the object requiring a first permission, which is granted to the first requester. If a second request for the object is received from a second requester, the second request including a request for execution of a second action with the object, execution of the second action requiring a second permission, then the second request is sent to the first requester, who grants or does not grant the second permission to the second requester. If permission is granted to the second requester, the second requester thereby captures the first object, and the first permission is terminated.

Description

OBJECTS MANAGEMENT
CROSS-REFERENCE
[01] The present application claims priority to Russian Patent Application No 2015126020, filed June 30, 2015, entitled "OBJECTS MANAGEMENT" the entirety of which is incorporated herein.
FIELD
[02] The present technology relates to application programming interface (API) solutions in general and specifically to a system and method for managing objects within an API solution.
BACKGROUND [03] Various global or local communications networks (the Internet, the World Wide Web, local area networks, and the like) offer a user a vast amount of information. The information includes a multitude of contextual topics, such as but not limited to, news and current affairs, maps, company information, financial information and resources, traffic information, games and entertainment-related information. Users use a variety of electronic devices (desktop computers, laptop computers, notebooks, smartphones, tablets, and the like) to have access to rich content (such as images, audio, video, animation, and other multimedia content from such networks). As such electronic devices have become more commonplace in everyday life, the demands on the functionality they provide have increased. As such, software programs have grown in size and number, and the need for different programs to operate cooperatively has increased.
[04] An application program interface (API) is a set of routines, protocols, and tools for building software applications. The API specifies how software components should interact. APIs are used, for example, when programming graphical user interface (GUI) components. An API can make it easier to develop a software program by providing all the building blocks, and the programmer then puts the blocks together. There are many different types of APIs for operating systems, applications, and websites.
[05] Many APIs use object-oriented programming, in which programmers define not only the data type of a data structure, but also the types of operations (functions) that can be applied to the data structure. In this way, the data structure becomes an object that includes both data and functions. Generally, an "object" is any item that can be individually selected and manipulated. This can include shapes and pictures that appear on a display screen as well as less tangible software entities. In object-oriented programming, for example, an object is a self-contained entity that consists of both data and procedures to manipulate the data. Object- oriented programming techniques enable programmers to create modules that do not need to be changed when a new type of object is added, as a programmer can simply create a new object that inherits many of its features from existing objects, making object-oriented programs easier to modify. In addition, programmers can create relationships between one object and another. For example, objects can inherit characteristics from other objects. [06] As the number of software programs (such as browsers, applications, applets, and the like) in use by an electronic device increases, the need to manage objects cooperatively also rises. Generally, objects are managed by a central permissions manager that assists in determination and/or grant of the permissions required for an operation. However, there is a need for improved methods and systems for objects management within a programming environment such as an API.
[07] U.S. Patent No. 6,993,665 (Heddings et al.) teaches methods and apparatus for providing a permissions manager capable of assisting an applet, for example, in determination and/or grant of the permissions required for an operation. An apparatus for managing permissions is disclosed, the apparatus including a software application, a permissions manager coupled to the software application and receiving a request sent by the software application, and a programming environment coupled to the permissions manager. The request may indicate a permission, which may be requested by the permissions manager. The permissions manager may access the programming environment to determine a required permission corresponding to the permission and to determine how to grant the required permission.
[08] PCT Application Publication No. WO 94/23362 Al (Neumann et al.) discloses an object oriented programming environment. The environment includes a plurality of classes and objects. Each object communicates with other objects in the environment by sending messages which invoke methods in these other objects. The environment contains at least one target object which contains one or more universal methods used for communicating with another object. These universal methods are typically included in all of the target objects in the environment, along with associated universal instance variables used by the universal methods, thereby forming a universal protocol or interface to target objects. Behavior objects, objects that implement the behavior of other objects, obtain and modify properties of the target object by directly invoking the universal methods residing in the target object.
Communication between the behavior object and the target object is accomplished through the universal protocol (method and instance variables).
[09] Mediator patterns to define an object that encapsulates how a set of objects interact have been described. With the mediator pattern, communication between objects is encapsulated with a mediator object. Objects no longer communicate directly with each other, but instead communicate through the mediator. This reduces the dependencies between communicating objects, thereby lowering the coupling {see, e.g., "Mediator Pattern."
Wikipedia. Wikimedia Foundation, 28 Nov. 2014. Web. 1 Jan. 2015;
http://en.wikipedia.Org/wiki/Mediator_pattern#Java).
SUMMARY
[10] It is an object of the present technology to ameliorate at least some of the inconveniences present in the prior art. Embodiments of the present technology have been developed based on inventors' appreciation that there is a need for methods and systems for objects management in a programming environment such as an API.
[11] In one aspect, implementations of the present technology provide a method for managing permissions for objects, the objects executable by a server as part of a software routine, the method executable at an electronic device (e.g., a client device, or the server). The method comprises receiving a first request for a first object from a first requester, the first request including a request for execution of a first action with the first object, execution of the first action requiring a first permission. In response to the first request, the first permission for execution of the first action is granted to the first requester, and the first requester thereby captures the first object. A second request for the first object is received from a second requester, the second request including a request for execution of a second action with the first object, execution of the second action requiring a second permission. In response to said second request, the second request is sent to the first requester, the first requester having captured the first object. One of the following is then executed: the first requester grants the second permission to the second requester, allowing execution of the second action by the second requester, the second requester thereby capturing the first object, and terminating the first permission and the first action execution with the first requester; or, the first requester does not grant the second permission to the second requester, not allowing execution of the second action by the second requester, the first requester maintaining capture of the first object. [12] In some implementations, responsive to the first requester granting the second permission to the second requester and allowing execution of the second action by the second requester, the first requester nevertheless maintains capture of the first object.
[13] In some implementations, the first action and the second action are the same. In alternative implementations, the first action and the second action are different. In some implementations, the second action comprises both the first action and an additional action. In such implementations, the first requester may partially grant the second permission to the second requester, allowing execution of part of the second action by the second requester. For example, the first requester may partially grant the second permission to the second requester by allowing execution of the first action by the second requester and not allowing execution of the additional action by the second requester. In an alternative embodiment, the first requester may allow execution of the additional action by the second requester and not allow execution of the first action by the second requester. In implementations where permission is partially granted to the second requester, the first requester maintains capture of the first object partially, the second requestor capturing the part of the second action for which it is granted permission and for which execution is allowed.
[14] In some implementations, the first object comprises a user interface element, a pointer, an audio object, an image object, a video object, or a text object. Non-limiting examples of user interface elements include text boxes, tool bars, menu bars, hyperlinks, and buttons. In some implementations, the first object may be a pop-up object. [15] In some implementations, the first action, the second action, and the additional action comprise, independently, one or more of: showing the first object, allowing the first object to pop up, entering text into the first object, inputting data or information into the first object, clicking on the first object, selecting the first object, selecting a portion of the first object, and deleting the first object.
[16] In an aspect, implementations of the present technology provide an electronic device associated with a user, the electronic device comprising a communication interface for communication with a server via a communication network, the server being configured to execute objects as part of a software routine; and a processor operationally connected with the communication interface. The processor is further configured to receive a first request for a first object from a first requester, the first request including a request for execution of a first action with the first object, execution of the first action requiring a first permission. In response to said first request, the processor is configured to grant the first permission for execution of the first action to the first requester, the first requester thereby capturing the first object. The processor is further configured to receive a second request for the first object from a second requester, the second request including a request for execution of a second action with the first object, execution of the second action requiring a second permission. In response to said second request, the processor is configured to send the second request to the first requester, the first requester having captured the first object, and to execute one of the following: 1) responsive to the first requester granting the second permission to the second requester, the processor is configured to allow execution of the second action by the second requester, the second requester thereby capturing the first object, and to terminate the first permission and the first action execution with the first requester; or, 2) responsive to the first requester not granting the second permission to the second requester, the processor is configured to not allow execution of the second action by the second requester, the first requester maintaining capture of the first object. [17] In some implementations of the electronic device, responsive to the first requester granting the second permission to the second requester and execution of the second action by the second requester being allowed, the first requester maintains capture of the first object.
[18] In some implementations of the electronic device, the first action and the second action are the same. In alternative implementations of the electronic device, the first action and the second action are different. In some implementations of the electronic device, the second action comprises both the first action and an additional action, and the first requester partially grants the second permission to the second requester such that execution of part of the second action by the second requester is allowed. For example, in some implementations, the first requester partially grants the second permission to the second requester by allowing execution of the first action by the second requester and not allowing execution of the additional action by the second requester. In alternative implementations, the first requester partially grants the second permission to the second requester by allowing execution of the additional action by the second requester and not allowing execution of the first action by the second requester. In such implementations, the first requester maintains capture of the first object partially, the second requestor capturing the part of the second action for which it is granted permission and for which execution is allowed.
[19] In some implementations of the electronic device, the first object comprises a user interface element, a pointer, an audio object, an image object, a video object, or a text object. Non-limiting examples of user interface elements include text boxes, tool bars, menu bars, hyperlinks, and buttons. In some implementations of the electronic device, the first object is a pop-up object.
[20] In some implementations of the electronic device, the first action, the second action, and the additional action comprise, independently, one or more of: showing the first object, allowing the first object to pop up, entering text into the first object, inputting data or information into the first object, clicking on the first object, selecting the first object, selecting a portion of the first object, and deleting the first object.
[21] In the context of the present specification, a "server" is a computer program that is running on appropriate hardware and is capable of receiving requests (e.g., from electronic devices) over a network (e.g., a communication network), and carrying out those requests, or causing those requests to be carried out. The hardware may be one physical computer or one physical computer system, but neither is required to be the case with respect to the present technology. In the present context, the use of the expression a "server" is not intended to mean that every task (e.g., received instructions or requests) or any particular task will have been received, carried out, or caused to be carried out, by the same server (i.e., the same software and/or hardware); it is intended to mean that any number of software elements or hardware devices may be involved in receiving/sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request; and all of this software and hardware may be one server or multiple servers, both of which are included within the expressions "at least one server" and "a server".
[22] In the context of the present specification, "electronic device" is any computing apparatus or computer hardware that is capable of running software appropriate to the relevant task at hand. Thus, some (non-limiting) examples of electronic devices include general purpose personal computers (desktops, laptops, netbooks, etc.), mobile computing devices, smartphones, and tablets, and network equipment such as routers, switches, and gateways. It should be noted that an electronic device in the present context is not precluded from acting as a server to other electronic devices. The use of the expression "an electronic device" does not preclude multiple electronic devices being used in receiving/sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request, or steps of any method described herein. In the context of the present specification, a "client device" refers to any of a range of end-user client electronic devices, associated with a user, such as personal computers, tablets, smartphones, and the like.
[23] In the context of the present specification, a "database" is any structured collection of data, irrespective of its particular structure, the database management software, or the computer hardware on which the data is stored, implemented or otherwise rendered available for use. A database may reside on the same hardware as the process that stores or makes use of the information stored in the database or it may reside on separate hardware, such as a dedicated server or plurality of servers.
[24] In the context of the present specification, the expression "data" includes information of any nature or kind whatsoever capable of being stored, for example, in a database, or transmitted electronically, for example, in a stream. Thus data includes, but is not limited to audio-visual works (images, movies, sound recordings, presentations etc.), location data, numerical data, etc., text (opinions, comments, questions, messages, etc.), documents, spreadsheets, etc. [25] In the context of the present specification, the expression "computer usable information storage medium" is intended to include media of any nature and kind whatsoever. Computer storage media can include volatile and non- volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer- readable instructions, data structures, program modules, or other data. Computer storage media can include, but is not limited to, random access memory (RAM), read only memory (ROM), electrically erasable programmable ROM (EEPROM), flash memory, or other memory technology, compact disk ROMs (CD-ROMs), digital versatile disks (DVDs) or other optical storage, floppy disks, hard drives, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, USB keys, solid state -drives, tape drives, or any other medium that can be used to store the desired information and that can be accessed to retrieve that information. [26] In the context of the present specification, the expression "communication network" is intended to include a telecommunications network such as a computer network, the Internet, a telephone network, a Telex network, a TCP/IP data network (e.g., a WAN network, a LAN network, etc.), and the like. The term "communication network" includes a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared and other wireless media, as well as combinations of any of the above.
[27] One skilled in the art will appreciate that, when the instant description refers to "receiving data" from a user or program, that the electronic device executing receiving of the data from the user or program may receive an electronic (or other) signal from the user or program. One skilled in the art will further appreciate that displaying data to the user via a graphical user interface or GUI (such as the screen of the electronic device and the like) may involve transmitting a signal to the GUI, the signal containing data, which data can be manipulated and at least a portion of the data can be displayed to the user using the GUI. Some of these steps and signal sending-receiving are well known in the art and, as such, have been omitted in certain portions of this description for the sake of simplicity. It should be understood that implementation of the signals is not particularly limited. For example, the signals can be sent and received, without limitation, using optical means (such as an optical connection), electronic means (such as using a wired or wireless connection), and mechanical means (such as pressure-based, temperature based or any other suitable physical parameter based).
[28] In the context of the present specification, the expression "cloud storage service" is intended to include computing facilities where multiple clients, client devices, communities, IT domains, and/or applications are managed or administrated separately in a multi-tenant- environment. A "cloud" environment relates to a structure wherein multiple independent users share a common set of infrastructure, platforms, services/applications, or resources in a manner that isolates them from each other securely. A user/client may be a company, an organization, or a private person, and a client device may refer to any of a range of end-user client devices, as described herein. Such a cloud service provides connectivity to be used, for example, by personal computers, tablets, smart phones, or other end user-connected devices (home entertainment, etc.). Many types of cloud services are known. For example, a cloud service may comprise decoupled administration models applicable to server blades in a data center, or any distribution of connected devices. The common set of infrastructure, platforms, services/applications, or resources is typically managed by an administrator, which manages and maintains the cloud service. Cloud-based resources may be public or private.
[29] In the context of the present specification, the words "first", "second", "third", etc. have been used as adjectives only for the purpose of allowing for distinction between the nouns that they modify from one another, and not for the purpose of describing any particular relationship between those nouns. Thus, for example, it should be understood that, the use of the terms "first user" and "third user" is not intended to imply any particular order, type, chronology, hierarchy or ranking (for example) of/between the users, nor is their use (by itself) intended to imply that any "second user" must necessarily exist in any given situation. Further, as is discussed herein in other contexts, reference to a "first" element and a "second" element does not preclude the two elements from being the same actual real-world element. Thus, for example, in some instances, a "first" server and a "second" server may be the same software and/or hardware, in other cases they may be different software and/or hardware.
[30] Implementations of the present technology each have at least one of the above- mentioned object and/or aspects, but do not necessarily have all of them. It should be understood that some aspects of the present technology that have resulted from attempting to attain the above-mentioned object may not satisfy this object and/or may satisfy other objects not specifically recited herein.
[31] Additional and/or alternative features, aspects and advantages of implementations of the present technology will become apparent from the following description, the accompanying drawings and the appended claims.
BRIEF DESCRIPTION OF THE DRAWINGS
[32] For a better understanding of the present technology, as well as other aspects and further features thereof, reference is made to the following description which is to be used in conjunction with the accompanying drawings, where:
[33] Figure 1 is a schematic diagram depicting a system, the system being implemented in accordance with non-limiting embodiments of the present technology.
[34] Figure 2 depicts a screen shot, the screen shot illustrating a graphical user interface displaying a street map and associated program objects. [35] Figure 3 is a block diagram depicting a method, the method being implemented within the system of Figure 1 and being implemented according with non-limiting embodiments of the present technology.
DETAILED DESCRIPTION [36] Referring to Figure 1, there is shown a schematic diagram of a system 100, the system 100 being suitable for implementing non-limiting embodiments of the present technology. It is to be expressly understood that the system 100 as depicted is merely an illustrative implementation of the present technology. Thus, the description thereof that follows is intended to be only a description of illustrative examples of the present technology. This description is not intended to define the scope or set forth the bounds of the present technology. In some cases, what are believed to be helpful examples of modifications to the system 100 may also be set forth below. This is done merely as an aid to understanding, and, again, not to define the scope or set forth the bounds of the present technology. These modifications are not an exhaustive list, and, as a person skilled in the art would understand, other modifications are likely possible. Further, where this has not been done (i.e. where no examples of modifications have been set forth), it should not be interpreted that no modifications are possible and/or that what is described is the sole manner of implementing that element of the present technology. As a person skilled in the art would understand, this is likely not the case. In addition it is to be understood that the system 100 may provide in certain instances simple implementations of the present technology, and that where such is the case they have been presented in this manner as an aid to understanding. As persons skilled in the art would understand, various implementations of the present technology may be of a greater complexity.
[37] The system 100 comprises a communication network 50. The communication network 50 is typically associated with an electronic device 20 and a server 40, the server 40 being associated with a data storage device 30 which stores program code for programs 10, 15.
[38] The implementation of the server 40 is not particularly limited, but as an example, the server 40 may be implemented as a single server. Alternatively, the server 40 can be implemented as a plurality of servers. [39] The implementation of the data storage device 30 is not particularly limited. As an example, the data storage device 30 can be a memory device such as a hard disk (not depicted) integrated with the electronic device 20, or the data storage device 30 can be connected to the electronic device 20 via the communication network 50 or, indeed, via any suitable wired or wireless connection. The data storage device 30 is typically a unit capable of storing files and data such as program code for programs 10, 15. Like the server 40, the data storage device 30 may be implemented as a single unit, or alternatively as a plurality of units. Within the latter embodiments, each of the plurality of data storage devices implementing data storage device 30 may be responsible for storing files from users in a particular region; or a particular type of users; or a particular type or size of files. Alternatively, each of the plurality of data storage devices implementing the data storage device 30 may be configured to store files and data according to a load-balancing approach executed by a supervisory entity (which can be, for example, the server 40 or one of the plurality of servers).
[40] It should be understood that any suitable hardware for storing data may be used. In some implementations, the data storage device 30 may be physically contiguous with the server 40, i.e., they are not necessarily separate pieces of hardware, as depicted, although they may be. In some alternative implementations, the data storage device 30 and/or the server 40 can be implemented in a cloud environment, for example as part of a cloud storage service.
[41] The implementation of the electronic device 20 is also not particularly limited. The electronic device may be any computing apparatus that is capable of running software appropriate to the relevant task at hand, such as without limitation: general purpose personal computers (desktops, laptops, netbooks, etc.), mobile computing devices, smartphones, and tablets, and network equipment such as routers, switches, and gateways. Electronic device 20 includes a processor or central processing unit (CPU) 22 and a memory unit 25. Although a single electronic device 20 is depicted in the illustrative example shown in Figure 1 , multiple electronic devices may be used in receiving/sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request, or steps of any method described herein.
[42] It should be noted that electronic device 20 is not precluded from acting as the server 40 to other electronic devices (not depicted). In other words, although the implementation illustrated in Figure 1 depicts the electronic device 20 and the server 40 as separate hardware components, in some implementations the server 40 may be physically contiguous with the electronic device 20, i.e., they are not necessarily separate pieces of hardware, as depicted, although they may be. [43] An instance 11 of the program 10 is loaded within an address space in memory 25 of the electronic device 20. Implementation of the memory 25 is not particularly limited. The memory 25 can comprise a virtual memory system with physical storage separate from the address space, but for the purposes of simplicity, the memory is shown in Figure 1 as a simple block 25.
[44] The instance 11 of the program is particularly arranged to in turn instantiate a number of program objects 12-1, 12-2 to 12-N (not depicted) (together referred to as program objects 12). Program objects can comprise a combination of executable code as well as data and so can either perform processing themselves and/or provide data for other program objects to process. For example, a program object such as a function or sub-routine might be instantiated by a parent object or even a main program to perform some processing on behalf of the calling parent object or main program. Object data can comprise a variety of types comprising, for example: primitive data types such as integers, real numbers, Boolean, characters; and structured or abstract data types such as arrays or lists and user-defined data types, each including multiple instances of data or combinations of data types.
[45] As described above, program objects can comprise instances of functions created during execution of the program instance 11 or simple or structured data objects some of which can comprise pointer values, with those pointers pointing to other functions or data. Program objects 12 are typically arranged hierarchically with parent objects causing the instantiation of one or more child objects. For ease of understanding, only one layer of child objects is illustrated in Figure 1 with objects 12-1, 12-2 to 12-N (not depicted) having been instantiated by the instance of program 10. It will be appreciated however that in a program of even moderate complexity, the object hierarchy can comprise many layers of objects.
[46] Program objects 12 can be executed by the server 40 as part of a software routine, e.g., as part of programs 10, 15. It should be expressly understood that implementation of program objects 12 is not particularly limited. Non-limiting examples of program objects 12 include user interface elements (such as text boxes, tool bars, menu bars, hyperlinks, buttons, and the like), pointers, audio objects, image objects, video objects, and text objects. In some non- limiting implementations, program objects 12 may be pop-up objects. Non-limiting examples of pop-up objects include objects that appear on top of or over the browser window of a Web site. For example, a pop-up object may appear when an option is clicked or otherwise selected by a user. In some implementations, a pop-up object may appear when a user places a cursor (e.g., by pointing with a mouse) over a portion of a browser window or Web site. Many implementations of pop-up objects may be used as is known by those of skill in the art.
[47] How a communication network 50 is implemented is not particularly limited and will vary depending on how the electronic device 20, server 40, and data storage device 30 are implemented. In some non-limiting embodiments of the present technology, the communication network 50 can be implemented as the Internet. In other embodiments of the present technology, the communication network 50 can be implemented differently, such as any wide-area communications network, local-area communications network, a private communications network and the like. Merely as an example and not as a limitation, in those embodiments of the present technology where the electronic device 20 is implemented as a client device such as a wireless communication device (such as a smartphone), the communication network 50 can be implemented as a wireless data transmittal path (such as but not limited to, a 3G communications network link, a 4G communications network link, a Wireless Fidelity, or WiFi® for short, a Bluetooth®, and the like). In those examples, where electronic device 20 is implemented as a notebook computer, the communication network 50 can be either wireless (such as Wireless Fidelity, or WiFi® for short, Bluetooth® or the like) or wired (such as an Ethernet based connection). Different electronic devices and different communication networks may be implemented independently of each other.
[48] For further understanding and illustration of the system 100, reference is now made to Figure 2, which depicts a screen shot 200 of a GUI displaying a street map 260 to a user (not depicted), the street map 260 indicating the location of an address 250 to the user. It should be noted that Figure 2 is for illustration purposes only to assist in understanding of the present technology. It should also be understood that Figure 2 contains a multitude of information, only relevant portions of which will be enumerated and described. [49] Implementation of the screen shot 200 is not particularly limited. In one non-limiting example, the screen shot 200 may be displayed by a browser application (not depicted) or opened using an internet browser (not depicted).
[50] In the non-limiting implementation depicted in Figure 2, the screen shot 200 shows a data-entry object 210, in which the user (not depicted) has entered the address 250
("address 1") for which the user is searching; a button object 220, on which the user can click to initiate display of the address 250 entered in the data-entry object 210; a second button object 230; and a pointer object 240, indicating location of the address 250 on the street map 260.
[51] In the second button object 230, the user can click on the terms therein ("hotels", "restaurants"), to initiate a search of nearby hotels or restaurants (hotels or restaurants located near the address 250). For example, if the user (not depicted) clicks on the term "hotels" in the second button object 230, then a new object (not depicted) may appear, the new object pointing to a hotel located near the address 250. In some implementations, other objects may also be removed in response to the user clicking on the term "hotels" in the second button object 230. For example, responsive to the user clicking on the term "hotels" in the second button object 230 and the new object (not depicted) appearing, the pointer object 240 and the data-entry object 210 may be removed.
[52] How the street map 260 is accessed by a user is not particularly limited. As one example, a user may access a web site associated with map or location services. For example, the Yandex Maps service can be accessed by typing in an URL (such as
https://maps.yandex.com) into a browser, such as that associated with Yandex search engine at www.yandex.ru. A client device may be, for example, executing a Yandex browser application. It should be expressly understood that any other commercially available or proprietary browser application, and any other available maps or location system, can be used for implementing non-limiting embodiments of the present technology. [53] In alternative non-limiting embodiments, a user may have downloaded a Yandex Map application (also referred to as an "app") onto a client device, such as a smartphone, and may access the map services using the app. In yet another non-limiting embodiment, an API for Yandex Maps may have been installed on a web app or site, and the user may access the map services through the API on the web app or site. Other implementations are possible, as is known by the skilled person in the art.
[54] Reference will now be made to Figure 3, which depicts a block diagram of a method 300, the method 300 being implemented in accordance with a non-limiting embodiment of the present technology. The method 300 can be conveniently executed by the electronic device 20. [55] Step 302 - receiving a first request for a first object from a first requester, the first request including a request for execution of a first action with the first object, execution of the first action requiring a first permission
[56] The method 300 begins at step 302, where the processor 22 of electronic device 20 receives a first request (not depicted) for a first object 12-1 from the server 40, the first request including a request for execution of a first action (not depicted) with the first object 12-1, execution of the first action requiring a first permission (not depicted).
[57] In some non-limiting embodiments of the present technology, the first request is received from the program 10 via the server 40 and the communication network 50. In alternative non- limiting embodiments of the present technology, the first request is received from the instance 11 of program 10 loaded within memory 25 of the electronic device 20. In such embodiments, the first request may be received from the processor 22 of the electronic device 20.
[58] Implementation of the first object 12-1 is not particularly limited. Referring to the illustrative embodiment depicted in Figure 2, the first object 12-1 may be considered, for the purposes of illustration, to be the pointer object 240. It should be noted that many other implementations are possible. For example, in alternative embodiments, the first object 12-1 could be considered to be the data-entry object 210, the button object 220, or the second button object 230. For ease of illustration, we consider the embodiment where the first object 12-1 is the pointer object 240.
[59] The first request includes a request for execution of a first action with the first object 12-1. Implementation of the first action is not particularly limited. As is known in the art, many operations and functions may be executed in association with, or by, the program objects 12. Non-limiting examples of such actions include showing or displaying an object, e.g., on a GUI; allowing an object to pop up; entering text into an object; inputting data or information into an object; clicking on an object; selecting an object; selecting a portion of an object; and deleting an object.
[60] Referring again to the illustrative embodiment depicted in Figure 2, the first request for the first object 12-1 (corresponding to the pointer object 240 in this example) includes a request to display the pointer object 240 on the street map 260 at the location of address 250. The first requester in this example is program 10 (or instance 11 of program 10), which corresponds for purposes of illustration to an app for maps (such as Yandex Maps).
[61] Continuing in the first step 302 of the method 300 depicted in Figure 3, a first request for a first object from a first requester has been received. The first request requires a first permission (not depicted). In other words, the first requester has requested permission to execute the first action with the first object. In the example shown in Figure 2, the app for maps (not depicted) requests permission to display the pointer object 240 on the street map 260 at the location of address 250, the user having entered the address 250 in the data-entry object 210 and clicked on the button object 220 to initiate display of the address 250. [62] Step 304 - in response to the first request, granting the first permission for execution of the first action to the first requester, the first requester thereby capturing the first object
[63] The method 300 continues with step 304. In response to the first request having been received, the first permission for execution of the first action is granted to the first requester. [64] Generally, the operating system (not depicted) of the electronic device 20 includes a central permissions manager (not depicted) that determines permissions within and throughout the system of the electronic device 20. In step 304, the first request having been received by the central permissions manager, the first permission for execution of the first action to the first requester is granted by the central permissions manager. With reference to the example shown in Figure 2, permission to display the pointer object 240 on the street map 260 at the location of address 250 is granted to the first requester by the central permissions manager (not depicted) of electronic device 20. The pointer object 240 will thus be displayed on the street map 260 at the location of address 250, e.g., on the GUI (not depicted) of the electronic device 20. [65] Continuing in step 304 of the method 300, the first requester having been granted the first permission by the central permissions manager (not depicted) of electronic device 20, the first requester thereby captures the first object 12-1 (the pointer object 240 in this example). In the context of the present specification, "capture" of a given object refers to taking control of permissions for the given object. Thus, while initially the central permissions manager (not depicted) of electronic device 20 determined permissions for the first object 12-1, once the first permission has been granted to the first requester, the first requester acquires control of permissions for the first object 12-1 from the central permissions manager. Going forward, for as long as the first requester maintains capture of the first object 12-1, it will be the first requester that grants/does not grant subsequent requests for permission to execute actions with the first object 12-1. [66] In implementations of the present technology, perrmssions are determined (granted/not granted) in accordance with predetermined rules. The entity controlling permissions (such as the central permissions manager of the electronic device 20, the first requester, or the entity capturing the first object 12-1) will determine permissions for objects 12 in accordance with preset rules. For example, the central permissions manager, the API, and/or the program in question may each follow a set of predetermined rules and procedures, as will be understood by those of skill in the art.
[67] Implementation of capture by the first requester is not particularly limited. In some embodiments, an object-associated permissions manager, distinct from the central permissions manager but associated with it, becomes associated with the first requester. Subsequent requests relating to the first object 12-1 are then sent from the central permissions manager to the object-associated permissions manager associated with the first requester, which determines permissions for the first object 12-1. If another requester captures the first object 12-1, then the object-associated permissions manager becomes associated with the other requester, and so on. If no request has been made and no requester has captured the first object 12-1, then the object-associated perrmssions manager remains associated with the central permissions manager.
[68] The method 300 now continues with step 306.
[69] Step 306 - receiving a second request for the first object from a second requester, the second request including a request for execution of a second action with the first object, execution of the second action requiring a second permission
[70] The method 300 continues with step 306, in which a second request (not depicted) for the first object 12-1 is received from a second requester (not depicted), the second request including a request for execution of a second action (not depicted) with the first object 12-1, execution of the second action requiring a second permission (not depicted). [71] As described above with regard to step 302 and the first request, the central permissions manager (not depicted) of electronic device 20 receives the second request for the first object 12-1 from the server 40. In some non-limiting embodiments of the present technology, the second request is received from the second requester via the server 40 and the communication network 50. In alternative non-limiting embodiments of the present technology, the second requester is located within memory 25 of the electronic device 20, and the second request is received from the processor 22 of the electronic device 20 via the central permissions manager.
[72] Implementation of the second action is not particularly limited. It should be expressly understood that the second action may or may not be the same as the first action, i.e., the first action and the second action may be the same or different. With reference to the embodiment illustrated in Figure 2, the first action and the second action may both be displaying the pointer object 240 on the street map 260. For example, the second request from the second requester may be a request to display the pointer object 240 on the street map 260 at a second location (not depicted), distinct from the first location corresponding to address 250. Alternatively, the second request from the second requester may be different from the first request to display the pointer object 240, being a request to modify the appearance of the pointer object 240, for example by changing its color or size or attaching a second object (such as a text box) to it. [73] In some non-limiting implementations of the present technology, the second action may include both the first action and an additional action. For example, the second request from the second requester may be a request to display the pointer object 240 on the street map 260 at a second location as well as a request to modify the appearance of the pointer object 240. Many such implementations are possible, as is known to those of skill in the art. [74] Implementation of the second requester is also not particularly limited. In some non- limiting embodiments of the present technology, the first requester and the second requester are separate entities. For example, in the example described above, the first requester is program 10 (or instance 11 of program 10), corresponding in the embodiment illustrated in Figure 2 to an app for maps (such as Yandex Maps). Continuing with this example, the second requester is program 15 (or an instance (not depicted) of program 15 loaded within an address space in memory 25 of the electronic device 20). Program 15 is separate from program 10. For example, program 10 (the first requester) is Yandex Maps, and program 15 (the second requester) may be Sky Maps, an app that displays star charts, constellations, and other celestial objects. The second requester, program 15 (Sky Maps) may request permission to display the pointer object 240 on a star chart (not depicted) in response to a user request.
[75] Although the first requester, program 10, and the second requester, program 15, are illustrated in Figure 1 as separate entities, the first requester and the second requester do not need to be separate entities. In some non-limiting embodiments of the present technology the first requester and the second requester may be the same, i.e., the first request and the second request are made by the same program. Continuing with the example illustrated in Figure 2, the first requester is program 10 (or instance 11 of program 10), corresponding to Yandex Maps, Yandex Maps having requested permission to display the pointer object 240 on the street map 260 at address 250. In response to the user entering a second address (not depicted) in the data-entry object 210, the second request is received from Yandex Maps, the second request including a request to display the pointer object 240 at the location of the second address. Many such implementations are possible. [76] The method 300 now continues with step 308.
[77] Step 308 - in response to the second request, sending the second request to the first requester, the first requester having captured the first object
[78] The method 300 continues with step 308 where, in response to receiving the second request, the second request is sent to the first requester by the central permissions manager, the first requester having captured the first object 12-1. For example, the central permissions manager may send the second request to an object-associated permissions manager. The object-associated permissions manager having become associated with the first requester.
[79] Implementation of capture by the first requester is not particularly limited. In some embodiments, an object-associated permissions manager, distinct from the central permissions manager but associated with it, becomes associated with the first requester. Subsequent requests relating to the first object 12-1 are then sent from the central permissions manager to the object-associated permissions manager associated with the first requester, which determines permissions for the first object 12-1. If another requester captures the first object 12-1, then the object-associated permissions manager becomes associated with the other requester, and so on. If no request has been made and no requester has captured the first object 12-1, then the object-associated permissions manager remains associated with the central permissions manager.
[80] As discussed above, for as long as the first requester maintains capture of the first object 12-1, it will be the first requester that determines permissions to execute actions with the first object 12-1. Accordingly, the processor 22 of the electronic device 20 sends the second request to the first requester (program 10, in the example described above) to determine the permission for the second request.
[81] The method 300 now continues with either step 310 or step 312, depending on whether the first requester grants the second permission to the second requester. [82] Step 310 - responsive to the first requester granting the second permission to the second requester, allowing execution of the second action by the second requester, the second requester thereby capturing the first object, and terminating the first permission and the first action execution with the first requester
[83] Step 312 - responsive to the first requester not granting the second permission to the second requester, not allowing execution of the second action by the second requester, the first requester maintaining capture of the first object
[84] If the first requester grants the second permission to the second requester, the method continues with step 310, such that execution of the second action by the second requester is allowed. The second requester thereby captures the first object 12-1, and the first permission and first action execution by the first requestor are terminated.
[85] Continuing with the example described above and illustrated in Figure 2, suppose the first requester is program 10 (or instance 11 of program 10), corresponding to Yandex Maps, Yandex Maps having requested (and been granted) permission to display the pointer object 240 on the street map 260 at address 250. In response to the user having entered a second address (not depicted) in the data-entry object 210, the second request has been received from the second requester (also Yandex Maps in this example), the second request including a request to display the pointer object 240 at the location of the second address (not depicted). In step 310, permission is granted to display the pointer object 240 on the street map 260 at the location of the second address. Accordingly, the first permission and the first action execution by the first requester are terminated, i.e., the pointer object 240 is removed from address 250 (being displayed instead at the location of the second address). The second requester captures the first object 12-1, i.e., captures control of permissions for the pointer object 240 going forward.
[86] Alternatively, if the first requester does not grant the second permission to the second requester, the method continues with step 312, such that execution of the second action by the second requester is not allowed. In this case, the pointer object 240 remains on the street map 260 at address 250, and the first requester maintains capture of the first object 12-1.
[87] In alternative implementations of the step 310, the first requester maintains capture of the first object 12-1, even though permission is granted to the second requester and execution of the second action by the second requester is allowed. For example, in the example described above, even though in step 310 permission is granted to the second requester to display the pointer object 240 on the street map 260 at the location of the second address, the first requester maintains capture of the first object 12-1, i.e., the first requester still determines permissions for the pointer object 240 going forward and the second requester does not capture control of permissions for the pointer object 240 going forward.
[88] In some implementations of the present technology, where the second action comprises both the first action and an additional action, the first requester may partially grant the second permission to the second requester, allowing execution of part of the second action by the second requester. For example, where the second request from the second requester is a request to display the pointer object 240 on the street map 260 at a second location as well as a request to modify the appearance of the pointer object 240, the first requester may grant permission to the second requester to display the pointer object 240 on the street map 260 at the second location, but may not grant permission to modify the appearance of the pointer object 240. In alternative implementations, the first requester may grant permission to the second requester to modify the appearance of the pointer object 240, but not to display the pointer object 240 on the street map 260 at the second location. In such embodiments, the first requester may maintain capture of the first object 12-1 (pointer object 240 in this example) completely, partially, or not at all (i.e., the second requester captures the first object 12-1).
[89] In embodiments where the first requester maintains capture partially, the second requester captures the first object 12-1 partially, control of permissions then being shared between the first requester and the second requester. Generally, in such embodiments the second requester captures the first object 12-1 with respect to the part of the second action for which it has been granted permission and for which execution has been allowed, the first requester maintaining capture of the first object 12-1 with respect to the part of the second action for which it did not grant permission to the second requester. For example, in the case where the first requester has granted permission to the second requester to display the pointer object 240 on the street map 260 at the second location but has not granted permission to the second requester to modify the appearance of the pointer object 240, the second requester may capture control of permissions for displaying the pointer object 240, while the first requester maintains capture of permissions for modifying the appearance of the pointer object 240. Many other permutations are possible as will be appreciated by those skilled in the art.
[90] In alternative implementations of step 310, the first requester may grant the second permission to the second requester, allowing execution of the second action by the second requester, without terminating the first permission and the first action execution with the first requester. In the example described above, the first requester may grant permission to the second requester to display a second pointer object (not depicted) on the street map 260 at the second location (not depicted), without terminating display of the pointer object 240 at the first location corresponding to address 250. In this case, there will be two pointer objects displayed on the street map 260, one at the first location corresponding to address 250 and one at the second location. In such embodiments, the first requester may or may not maintain capture of the first object 12-1 (the pointer object 240), i.e., the second requester may or may not capture the first object 12-1.
[91] As such, from one perspective, embodiments of the present technology can be summarized as follows, structured in numbered clauses. [92] CLAUSE 1. A method for managing permissions for objects (12), the objects (12) executable by a server (40) as part of a software routine, the method executable at an electronic device (20), the method comprising:
[93] a) receiving a first request for a first object (12-1) from a first requester, the first request including a request for execution of a first action with the first object (12-1), execution of the first action requiring a first permission; [94] b) in response to said first request, granting the first permission for execution of the first action to the first requester, the first requester thereby capturing the first object (12-1);
[95] c) receiving a second request for the first object (12-1) from a second requester, the second request including a request for execution of a second action with the first object (12- 1), execution of the second action requiring a second permission;
[96] d) in response to said second request, sending the second request to the first requester, the first requester having captured the first object (12-1); and
[97] executing one of:
[98] e) responsive to the first requester granting the second permission to the second requester, allowing execution of the second action by the second requester, the second requester thereby capturing the first object (12-1), and terminating the first permission and the first action execution with the first requester; and,
[99] f) responsive to the first requester not granting the second permission to the second requester, not allowing execution of the second action by the second requester, the first requester maintaining capture of the first object (12-1).
[100] CLAUSE 2. The method of clause 1, wherein the first action and the second action are the same.
[101] CLAUSE 3. The method of clause 1, wherein the first action and the second action are different.
[102] CLAUSE 4. The method of clause 3, wherein, in step e), responsive to the first requester granting the second permission to the second requester and allowing execution of the second action by the second requester, the first requester maintains capture of the first object (12-1).
[103] CLAUSE 5. The method of clause 3 or 4, wherein the second action comprises both the first action and an additional action, and wherein the first requester granting the second permission to the second requester comprises the first requester partially granting the second permission to the second requester and allowing execution of part of the second action by the second requester. [104] CLAUSE 6. The method of clause 5, wherein the first requester partially granting the second permission to the second requester comprises the first requester allowing execution of the first action by the second requester and not allowing execution of the additional action by the second requester. [105] CLAUSE 7. The method of clause 5, wherein the first requester partially granting the second permission to the second requester comprises the first requester allowing execution of the additional action by the second requester and not allowing execution of the first action by the second requester.
[106] CLAUSE 8. The method of any one of clauses 5 to 7, wherein the first requester maintains capture of the first object (12-1) partially, the second requestor capturing the part of the second action for which it is granted permission and for which execution is allowed.
[107] CLAUSE 9. The method of any one of clauses 1 to 8, wherein the first object (12-1) comprises a user interface element, a pointer, an audio object, an image object, a video object, or a text object. [108] CLAUSE 10. The method of clause 9, wherein the user interface element comprises a text box, a tool bar, a menu bar, a hyperlink, or a button.
[109] CLAUSE 11. The method of any one of clauses 1 to 10, wherein the first object (12-1) is a pop-up object.
[110] CLAUSE 12. The method of any one of clauses 4 to 7, wherein the first action, the second action, and the additional action comprise, independently, one or more of: showing the first object (12-1), allowing the first object (12-1) to pop up, entering text into the first object (12-1), inputting data or information into the first object (12-1), clicking on the first object (12-1), selecting the first object (12-1), selecting a portion of the first object (12-1), and deleting the first object (12-1). [H I] CLAUSE 13. The method of any one of clauses 1 to 12, wherein the electronic device (20) is a client device or the server (40).
[112] CLAUSE 14. An electronic device (20) associated with a user, the electronic device (20) comprising: a communication interface for communication with a server (40) via a communication network (50), the server (40) being configured to execute objects (12) as part of a software routine; a processor (22) operationally connected with the communication interface, the processor (22) being further configured to: a) receive a first request for a first object (12-1) from a first requester, the first request including a request for execution of a first action with the first object (12-1), execution of the first action requiring a first permission; b) in response to said first request, grant the first permission for execution of the first action to the first requester, the first requester thereby capturing the first object (12-1); c) receive a second request for the first object (12-1) from a second requester, the second request including a request for execution of a second action with the first object (12-1), execution of the second action requiring a second permission; d) in response to said second request, send the second request to the first requester, the first requester having captured the first object (12-1); and execute one of: e) responsive to the first requester granting the second permission to the second requester, allow execution of the second action by the second requester, the second requester thereby capturing the first object (12-1), and terminate the first permission and the first action execution with the first requester; and, f) responsive to the first requester not granting the second permission to the second requester, not allow execution of the second action by the second requester, the first requester maintaining capture of the first object (12-1).
[113] CLAUSE 15. The electronic device (20) of clause 14, wherein the first action and the second action are the same.
[114] CLAUSE 16. The electronic device (20) of clause 14, wherein the first action and the second action are different. [115] CLAUSE 17. The electronic device (20) of clause 16, wherein, in step e), responsive to the first requester granting the second permission to the second requester and execution of the second action by the second requester being allowed, the first requester maintains capture of the first object (12-1). [116] CLAUSE 18. The electronic device of clause 16 or 17, wherein the second action comprises both the first action and an additional action, and wherein the first requester granting the second permission to the second requester comprises the first requester partially granting the second permission to the second requester such that execution of part of the second action by the second requester is allowed. [117] CLAUSE 19. The electronic device of clause 18, wherein the first requester partially granting the second permission to the second requester comprises the first requester allowing execution of the first action by the second requester and not allowing execution of the additional action by the second requester.
[118] CLAUSE 20. The electronic device of clause 18, wherein the first requester partially granting the second permission to the second requester comprises the first requester allowing execution of the additional action by the second requester and not allowing execution of the first action by the second requester.
[119] CLAUSE 21. The electronic device of any one of clauses 18 to 20, wherein the first requester maintains capture of the first object (12-1) partially, the second requestor capturing the part of the second action for which it is granted permission and for which execution is allowed.
[120] CLAUSE 22. The electronic device of any one of clauses 14 to 21, wherein the first object (12-1) comprises a user interface element, a pointer, an audio object, an image object, a video object, or a text object. [121] CLAUSE 23. The electronic device of clause 22, wherein the user interface element comprises a text box, a tool bar, a menu bar, a hyperlink, or a button.
[122] CLAUSE 24. The electronic device of any one of clauses 14 to 23, wherein the first object (12-1) is a pop-up object. [123] CLAUSE 25. The electronic device of any one of clauses 17 to 20, wherein the first action, the second action, and the additional action comprise, independently, one or more of: showing the first object (12-1), allowing the first object (12-1) to pop up, entering text into the first object (12-1), inputting data or information into the first object (12-1), clicking on the first object (12-1), selecting the first object (12-1), selecting a portion of the first object (12- 1), and deleting the first object (12-1).
[124] CLAUSE 26. The electronic device of any one of clauses 14 to 25, wherein the electronic device is a client device or the server (40).
[125] Some technical effects of non-limiting embodiments of the present technology may include provision of a decentralized objects management, where a central permissions manager is not responsible for determining permissions for objects in all instances. This provision of objects management may be more efficient, quicker, require less processing, reduce the burden on the processor, reduce memory or RAM usage, and/or reduce energy consumption by an electronic device. In embodiments where the electronic device 20 is implemented as a wireless communication device, ability to reduce energy consumption would result in conservation of battery power of the electronic device 20. It should be expressly understood that not all technical effects mentioned herein need to be enjoyed in each and every embodiment of the present technology. For example, embodiments of the present technology may be implemented without the user enjoying some of these technical effects, while other embodiments may be implemented with the user enjoying other technical effects or none at all.
[126] Modifications and improvements to the above-described implementations of the present technology may become apparent to those skilled in the art. The foregoing description is intended to be exemplary rather than limiting. The scope of the present technology is therefore intended to be limited solely by the scope of the appended claims.

Claims

A method for managing permissions for objects, the objects executable by a server as part of a software routine, the method executable at an electronic device, the method comprising: a) receiving a first request for a first object from a first requester, the first request including a request for execution of a first action with the first object, execution of the first action requiring a first permission; b) in response to said first request, granting the first permission for execution of the first action to the first requester, the first requester thereby capturing the first object; c) receiving a second request for the first object from a second requester, the second request including a request for execution of a second action with the first object, execution of the second action requiring a second permission; d) in response to said second request, sending the second request to the first requester, the first requester having captured the first object; and executing one of: e) responsive to the first requester granting the second permission to the second requester, allowing execution of the second action by the second requester, the second requester thereby capturing the first object, and terminating the first permission and the first action execution with the first requester; and, f) responsive to the first requester not granting the second permission to the second requester, not allowing execution of the second action by the second requester, the first requester maintaining capture of the first object.
The method of claim 1, wherein the first action and the second action are the same.
The method of claim 1 , wherein the first action and the second action are different.
The method of claim 3, wherein, in step e), responsive to the first requester granting the second permission to the second requester and allowing execution of the second action by the second requester, the first requester maintains capture of the first object.
5. The method of claim 3, wherein the second action comprises both the first action and an additional action, and wherein the first requester granting the second permission to the second requester comprises the first requester partially granting the second permission to the second requester and allowing execution of part of the second action by the second requester.
6. The method of claim 5, wherein the first requester partially granting the second permission to the second requester comprises the first requester allowing execution of the first action by the second requester and not allowing execution of the additional action by the second requester.
7. The method of claim 5, wherein the first requester partially granting the second permission to the second requester comprises the first requester allowing execution of the additional action by the second requester and not allowing execution of the first action by the second requester.
8. The method of claim 5, wherein the first requester maintains capture of the first object partially, the second requestor capturing the part of the second action for which it is granted permission and for which execution is allowed.
9. The method of claim 1, wherein the first object comprises a user interface element, a pointer, an audio object, an image object, a video object, or a text object.
10. The method of claim 9, wherein the user interface element comprises a text box, a tool bar, a menu bar, a hyperlink, or a button.
11. The method of claim 1, wherein the first object is a pop-up object.
12. The method of claim 4, wherein the first action, the second action, and the additional action comprise, independently, one or more of: showing the first object, allowing the first object to pop up, entering text into the first object, inputting data or information into the first object, clicking on the first object, selecting the first object, selecting a portion of the first object, and deleting the first object.
13. The method of claim 1, wherein the electronic device is a client device or the server.
14. An electronic device associated with a user, the electronic device comprising: a communication interface for communication with a server via a communication network, the server being configured to execute objects as part of a software routine; a processor operationally connected with the communication interface, the processor being further configured to: a) receive a first request for a first object from a first requester, the first request including a request for execution of a first action with the first object, execution of the first action requiring a first permission; b) in response to said first request, grant the first permission for execution of the first action to the first requester, the first requester thereby capturing the first object; c) receive a second request for the first object from a second requester, the second request including a request for execution of a second action with the first object, execution of the second action requiring a second permission; d) in response to said second request, send the second request to the first requester, the first requester having captured the first object; and execute one of: e) responsive to the first requester granting the second permission to the second requester, allow execution of the second action by the second requester, the second requester thereby capturing the first object, and terminate the first permission and the first action execution with the first requester; and, f) responsive to the first requester not granting the second permission to the second requester, not allow execution of the second action by the second requester, the first requester maintaining capture of the first object.
15. The electronic device of claim 14, wherein the first action and the second action are the same.
16. The electronic device of claim 14, wherein the first action and the second action are different.
17. The electronic device of claim 16, wherein, in step e), responsive to the first requester granting the second permission to the second requester and execution of the second action by the second requester being allowed, the first requester maintains capture of the first object.
18. The electronic device of claim 16, wherein the second action comprises both the first action and an additional action, and wherein the first requester granting the second permission to the second requester comprises the first requester partially granting the second permission to the second requester such that execution of part of the second action by the second requester is allowed.
19. The electronic device of claim 18, wherein the first requester partially granting the second permission to the second requester comprises the first requester allowing execution of the first action by the second requester and not allowing execution of the additional action by the second requester.
20. The electronic device of claim 18, wherein the first requester partially granting the second permission to the second requester comprises the first requester allowing execution of the additional action by the second requester and not allowing execution of the first action by the second requester.
21. The electronic device of claim 18, wherein the first requester maintains capture of the first object partially, the second requestor capturing the part of the second action for which it is granted permission and for which execution is allowed.
22. The electronic device of claim 14, wherein the first object comprises a user interface element, a pointer, an audio object, an image object, a video object, or a text object.
23. The electronic device of claim 22, wherein the user interface element comprises a text box, a tool bar, a menu bar, a hyperlink, or a button.
24. The electronic device of claim 14, wherein the first object is a pop-up object.
25. The electronic device of claim 17, wherein the first action, the second action, and the additional action comprise, independently, one or more of: showing the first object, allowing the first object to pop up, entering text into the first object, inputting data or information into the first object, clicking on the first object, selecting the first object, selecting a portion of the first object, and deleting the first object.
26. The electronic device of claim 14, wherein the electronic device is a client device or the server.
PCT/IB2016/050520 2015-06-30 2016-02-02 Objects management WO2017001938A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
RU2015126020 2015-06-30
RU2015126020A RU2632142C2 (en) 2015-06-30 2015-06-30 Method and electronic permission management unit for objects

Publications (1)

Publication Number Publication Date
WO2017001938A1 true WO2017001938A1 (en) 2017-01-05

Family

ID=57607921

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2016/050520 WO2017001938A1 (en) 2015-06-30 2016-02-02 Objects management

Country Status (2)

Country Link
RU (1) RU2632142C2 (en)
WO (1) WO2017001938A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU186650U1 (en) * 2018-04-25 2019-01-29 Федеральное государственное казенное военное образовательное учреждение высшего образования "Михайловская военная артиллерийская академия" МО РФ DEVICE FOR CALCULATING THE COMPLETENESS OF THE MILITARY MANAGEMENT BODY AT THE CONTROL OF THE COMBAT PREPARATION OF SLAVING FORMATIONS

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060235738A1 (en) * 2005-04-15 2006-10-19 Judy Doyle Multi-authoring within benefits content system
US20090094523A1 (en) * 2007-09-12 2009-04-09 Terry Noel Treder Methods and Systems for Maintaining Desktop Environments providing integrated access to remote and local resourcses
US20150161210A1 (en) * 2013-12-10 2015-06-11 Xor Data Exchange, Inc System and method of permission-based data sharing

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU6419094A (en) * 1993-03-31 1994-10-24 Kalieda Labs, Inc. Behavior objects
RU2207619C2 (en) * 2001-07-12 2003-06-27 Щеглов Андрей Юрьевич Resource access differentiation system
US6993665B2 (en) * 2002-05-01 2006-01-31 Sun Microsystems, Inc. Applet permissions manager
US7970823B2 (en) * 2004-09-02 2011-06-28 Broadway Technology, Llc System for sharing data objects among applications
US7546335B2 (en) * 2004-09-02 2009-06-09 Broadway Technology, Llc System and method for a data protocol layer and the transfer of data objects using the data protocol layer
US8656465B1 (en) * 2011-05-09 2014-02-18 Google Inc. Userspace permissions service
US8955037B2 (en) * 2011-05-11 2015-02-10 Oracle International Corporation Access management architecture
US9471798B2 (en) * 2013-09-20 2016-10-18 Oracle International Corporation Authorization policy objects sharable across applications, persistence model, and application-level decision-combining algorithm

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060235738A1 (en) * 2005-04-15 2006-10-19 Judy Doyle Multi-authoring within benefits content system
US20090094523A1 (en) * 2007-09-12 2009-04-09 Terry Noel Treder Methods and Systems for Maintaining Desktop Environments providing integrated access to remote and local resourcses
US20150161210A1 (en) * 2013-12-10 2015-06-11 Xor Data Exchange, Inc System and method of permission-based data sharing

Also Published As

Publication number Publication date
RU2015126020A (en) 2017-01-11
RU2632142C2 (en) 2017-10-02

Similar Documents

Publication Publication Date Title
US11265378B2 (en) Cloud storage methods and systems
US9866615B2 (en) Remote browsing session management
US10275433B2 (en) Remote browsing and searching
JP7013466B2 (en) Application data processing methods, equipment, and computer programs
US10567346B2 (en) Remote browsing session management
US9253284B2 (en) Historical browsing session management
US9298747B2 (en) Deployable, consistent, and extensible computing environment platform
US10296558B1 (en) Remote generation of composite content pages
TWI590157B (en) Compressed serialization of data for communication from a client-side application
US20130080577A1 (en) Historical browsing session management
US9152970B1 (en) Remote co-browsing session management
US20120042002A1 (en) System and method for context driven centralized help
US9336321B1 (en) Remote browsing and searching
JP2003518683A (en) Method and apparatus for presenting data to a user
EP2761506B1 (en) Historical browsing session management
US9178698B1 (en) Dynamic key management
US11882154B2 (en) Template representation of security resources
JP2021528766A (en) Mediated search for networked content
US9330188B1 (en) Shared browsing sessions
US20170134364A1 (en) Note update method and device
WO2017001938A1 (en) Objects management
US9383958B1 (en) Remote co-browsing session management
US11429376B2 (en) Run-time modification of an application definition schema that controls the behavior of a software application
US10437614B2 (en) System and method for designating multi-object favorites
Srinivasa et al. MeghaOS: a framework for scalable, interoperable cloud based operating system

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16817319

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16817319

Country of ref document: EP

Kind code of ref document: A1