IP Library Granted Patent US 10,979,235
Granted Patent B2
US 10,979,235 · App. 15/789,809 · Granted Apr 13, 2021

Content management system supporting third-party code

Inventors: Alexander Embiricos (San Francisco, CA); Matt Broussard (San Francisco, CA); Willy Wu (San Francisco, CA); Jennifer Lee (San Francisco, CA); Igor Kofman (San Francisco, CA); Aj Palkovic (San Francisco, CA)
Assignee: Dropbox, Inc.
H04L12/1813G06F9/547H04L12/1822H04L67/20
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,979,235
App. No.
15/789,809
Filed
Oct 20, 2017
Granted
Apr 13, 2021
Kind
B2
Art Unit
2459
USPC
709/205
Abstract

The disclosed technology relates to a system configured to retrieve a content item from a first domain of a content management system, analyze the content item to identify a portion of the content item that references third-party code, retrieve the third-party code from a second domain of the content management system, and execute the third-party code in the portion of the content item.

Claims (60)

1. A computer-implemented method comprising:

retrieving, by a client device, a content item from a first domain of a content management system;

identifying, by the client device, a portion of the content item that references third-party code stored in a second domain of the content management system and isolated from the first domain of the content management system;

requesting, by the client device, the third-party code from the second domain of the content management system;

generating, by the client device, third-party content by executing the third-party code;

inserting, by the client device, the third-party content into the portion of the content item;

sending, by the client device to the first domain of the content management system, a request to be relayed by the first domain for additional third-party content from a source external to the content management system;

receiving, from the first domain of the content management system, the additional third-party content in response to the request;

rendering, by the client device, the content item with the third-party content and the additional third-party content; and

maintaining a same-origin policy configured to restrict access of the third-party code to content of the content item located outside of the portion of the content item that references the third-party code based on having different domains.

2. The computer-implemented method of claim 1 , wherein when the client device lacks a copy of credentials for accessing the additional third-party content, the client device gains access to the additional third-party content using credentials stored on the content management system.

3. The computer-implemented method of claim 1 , further comprising:

generating, based on execution of the third-party code, data associated with the third-party code; and

transmitting the data associated with the third-party code to the content management system for storage.

4. The computer-implemented method of claim 1 , further comprising:

generating, based on execution of the third-party code, data associated with the third-party code; and

transmitting the data associated with the third-party code to the source external to the content management system for storage.

5. The computer-implemented method of claim 1 , wherein execution of the third-party code is sandboxed from the content item.

6. The computer-implemented method of claim 5 , wherein the third-party code is configured to retrieve data associated with the content item via a postMessage interface.

7. The computer-implemented method of claim 1 , wherein the third-party code originates from a third-party that is external to the content management system and separate from the client device.

8. The computer-implemented method of claim 1 , wherein the portion of the content item that references the third-party code is an iframe.

9. The computer-implemented method of claim 1 , wherein the portion of the content item that references the third-party code is a hidden iframe and wherein the third-party content is non-displayable content rendered in the hidden iframe.

10. The computer-implemented method of claim 1 , wherein the third-party content comprises at least one of a picture, a video, a document, an audio file, or a widget.

11. A non-transitory computer readable medium comprising instructions, the instructions, when executed by a computing system, cause the computing system to:

retrieve, by a client device, a content item from a first domain of a content management system;

identify, by the client device, a portion of the content item that references third-party code stored in a second domain of the content management system;

request, by the client device, the third-party code from the second domain of the content management system;

execute, by the client device, the third-party code in the portion of the content item, the third-party code retrieved from the second domain of the content management system that is isolated from the first domain of the content management system, wherein the third-party code is executed according to a same-origin policy, wherein access is restricted based on code with different origins;

send, by the client device to the first domain of the content management system, a request to be relayed by the first domain for third-party content from a source external to the content management system;

receive, from the first domain of the content management system, the third-party content in response to the request; and

render, by the client device, the content item with the third-party content.

12. The non-transitory computer readable medium of claim 11 , wherein the executing of the third-party code in the portion of the content item causes the computing system to:

produce additional third-party content;

insert the additional third-party content into the portion of the content item; and

render the content item with the additional third-party content.

13. A client device comprising:

one or more processors; and

at least one non-transitory computer-readable medium storing instructions that, when executed by the one or more processors, cause the one or more processors to:

retrieve, by the client device, a content item from a first domain of a content management system;

identify, by the client device, a secure portion of the content item that references third-party code, the third-party code stored in a second domain of the content management system and isolated from the first domain of the content management system;

request, by the client device, the third-party code from the second domain of the content management system;

execute, by the client device, the third-party code in the secure portion of the content item, wherein the third-party code is executed according to a same-origin policy, wherein access is restricted based on code with different origins;

send, by the client device to the first domain of the content management system, a request to be relayed by the first domain for third-party content from a source external to the content management system;

receive, from the first domain of the content management system, the third-party content in response to the request; and

render, by the client device, the content item with the third-party content.

14. The client device of claim 13 , wherein the third-party code was provided to the content management system by the source external to the content management system.

15. The client device of claim 14 , wherein the instructions further cause the one or more processors to:

retrieve, based on the executing of the third-party code, content from the source external to the content management system.

16. The client device of claim 14 , wherein the instructions further cause the one or more processors to:

retrieve, based on the executing of the third-party code, data associated with the third-party code from the content management system.

17. The client device of claim 13 , wherein the executing of the third-party code causes the one or more processors to:

produce additional third-party content; and

render the content item with the additional third-party content.

18. The client device of claim 17 , wherein when the client device lacks a copy of credentials for accessing the additional third-party content, the client device gains access to the additional third-party content using credentials stored on the content management system.

19. The client device of claim 13 , wherein the instructions further cause the one or more processors to:

generate, based on execution of the third-party code, data associated with the third-party code; and

transmit the data associated with the third-party code to the content management system for storage.

20. The client device of claim 13 , wherein the instructions further cause the one or more processors to:

generate, based on execution of the third-party code, data associated with the third-party code; and

transmit the data associated with the third-party code to the source external to the content management system for storage.

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 Dec 13, 2017
From: EMBIRICOS, ALEXANDER; BROUSSARD, MATT; WU, WILLY; LEE, JENNIFER; KOFMAN, IGOR; PALKOVIC, AJ
To: DROPBOX, INC.
Reel/Frame 044380/0369 →
Continuity (1)
Related Publication 20190123924A1 · Apr 25, 2019