IP Library Granted Patent US 10,552,181
Granted Patent B2
US 10,552,181 · App. 16/249,614 · Granted Feb 4, 2020

User interface extender

Inventor: Maxime Larabie-Belanger (San Francisco, CA)
Assignee: Dropbox, Inc.
G06F9/451G06F8/38G06F9/542G06F9/45512G06F9/54G06F2209/545
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,552,181
App. No.
16/249,614
Granted
Feb 4, 2020
Kind
B2
Abstract

Described embodiments enable generation of user interface (UI) extensions to a UI of a separate application. For example, a method may include receiving system notifications from the operating system indicating UI events associated with a UI state of the operating system. Responsive to a system notification for a target UI object or application, the method includes generating or updating a UI sub-state for the target application including target UI objects based on graphical properties of the target UI object as defined in the system notification. The method further includes generating a UI extension for a target UI object of the target application based on the graphical properties of the target UI object in the updated UI sub-state. The UI extension can be an overlay controlled by a separate process from the target application, and thus can be arbitrarily attached to the UI of the target application.

Claims (54)

1. A method of extending a user interface (UI) of a target application displayed on a computer system, the method comprising:

receiving a system notification from an operating system indicating a UI event associated with a UI state of the operating system, wherein the UI state indicates a target UI object related to the target application, wherein the target UI object comprises a length, width, and location;

updating a UI sub-state for the target application based on the received system notification, wherein the UI sub-state is separate from the UI state of the operating system;

generating a UI extension for the target UI object of the target application based on the UI sub-state, the generating of the UI extension including determining graphical properties of a UI extension object of the UI extension, the graphical properties of the UI extension object including a length, width, and location of the UI extension object; and

causing display of the UI extension in coordination with the target UI object.

2. The method of claim 1 , wherein the UI state is created by the operating system and defines graphical properties of the target UI object.

3. The method of claim 1 , wherein the system notification is received after registering for system notifications related to the target UI object.

4. The method of claim 1 , wherein the UI extension is generated based further on the graphical properties of the target UI object defined by the UI sub-state.

5. The method of claim 1 , wherein the system notification is received via a UI API of the operating system.

6. The method of claim 1 , further comprising:

receiving a second system notification from the operating system indicating an activation event; and

in response to receiving the second system notification:

requesting UI objects of the target application from the operating system;

receiving the UI objects in response to the request;

identifying the target UI object from the received UI objects;

adding the target UI object to the UI sub-state; and

registering for system notifications for the target UI object.

7. The method of claim 1 , further comprising:

determining one or more child UI objects of the target UI object;

determining graphical properties of the one or more child UI objects; and

determining the graphical properties of a UI extension object based on the graphical properties of the one or more child UI objects.

8. The method of claim 1 , wherein causing display of the UI extension includes causing display of the UI extension over or adjacent to the target UI object.

9. The method of claim 1 , wherein:

the system notification includes a global unique identifier (GUID) that identifies the target UI object; and

the method further comprises, responsive to receiving the system notification:

determining candidate GUIDs based on querying an internal UI state of candidate target applications; and

determining the target application from the candidate target applications by comparing the GUID of the system notification with the candidate GUIDs received from the candidate target applications.

10. The method of claim 9 , further comprising:

determining a file system path associated with the target UI object by querying the target application with the GUID; and

identifying a UI object type for the target UI object based on the file system path.

11. The method claim 10 , further comprising updating the UI sub-state for the target UI object such that the target UI object is associated with the UI object type.

12. The method of claim 9 , further comprising:

determining a file system path associated with the target UI object by querying the target application with the GUID; and

identifying the target UI object as a content item of a content management system based on the file system path.

13. The method of claim 12 , wherein generating the UI extension includes generating a UI extension object that provides an interface for functionality of the content management system related to the content item.

14. The method of claim 1 further comprising:

associating a graphics object ID for a graphics object rendered by the operating system with a UI object ID of the target UI object;

receiving a second system notification indicating a graphics event including the graphics object ID;

identifying the target UI object based on the graphics object ID and the associated UI object ID; and

updating graphical properties of the target UI object based on graphical properties of the graphics object.

15. The method of claim 1 further comprising maintaining a predefined number of UI sub-states, each corresponding to one of multiple target applications executing on the operating system.

16. An apparatus for extending a user interface (UI) of a target application displayed on a computer system, the apparatus comprising:

a memory and one or more processors, configured via a set of instructions to:

receive a system notification from an operating system indicating a UI event associated with a UI state of the operating system, wherein the UI state indicates a target UI object related to the target application, wherein the target UI object comprises a length, width, and location;

update a UI sub-state for the target application based on the received system notification, wherein the UI sub-state is separate from the UI state of the operating system;

generate a UI extension for the target UI object of the target application based on the UI sub-state, the generating of the UI extension including determining graphical properties of a UI extension object of the UI extension, the graphical properties of the UI extension object including a length, width, and location of the UI extension object; and

cause display of the UI extension in coordination with the target UI object.

17. The apparatus of claim 16 , wherein the UI state is created by the operating system and defines graphical properties of the target UI object, wherein the system notification is received after registering for system notifications related to the target UI object, wherein the UI extension is generated based further on the graphical properties of the target UI object defined by the UI sub-state, and wherein the system notification is received via a UI API of the operating system.

18. A non-transitory computer-readable storage medium storing instructions that, when executed by a computing system, cause the computing system to perform operations for extending, on a display of a computer system, a user interface (UI) of a target application, the target application executing on an operating system of the computer system, the operations comprising:

receiving a system notification from an operating system indicating a UI event associated with a UI state of the operating system, wherein the UI state indicates a target UI object related to the target application, wherein the target UI object comprises a length, width, and location;

updating a UI sub-state for the target application based on the received system notification, wherein the UI sub-state is separate from the UI state of the operating system;

generating a UI extension for the target UI object of the target application based on the UI sub-state, the generating of the UI extension including determining graphical properties of a UI extension object of the UI extension, the graphical properties of the UI extension object including a length, width, and location of the UI extension object; and

causing display of the UI extension in coordination with the target UI object.

19. The non-transitory computer-readable storage medium of claim 16 , wherein the UI state is created by the operating system and defines graphical properties of the target UI object, wherein the system notification is received after registering for system notifications related to the target UI object, wherein the UI extension is generated based further on the graphical properties of the target UI object defined by the UI sub-state, and wherein the system notification is received via a UI API of the operating system.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069635/0332 →
SECURITY INTEREST Recorded Dec 12, 2024
From: DROPBOX, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069604/0611 →
PATENT SECURITY AGREEMENT Recorded Mar 10, 2021
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 055670/0219 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2019
From: LARABIE-BELANGER, MAXIME
To: DROPBOX, INC.
Reel/Frame 048050/0089 →