IP Library Granted Patent US 12,361,381
Granted Patent B2
US 12,361,381 · App. 17/676,055 · Granted Jul 15, 2025

Providing a binary data file to a client application using a document model

Inventors: Brian Lewis Cairns (Boulder, CO); John Day-Richter (Denver, CO)
Assignee: Google LLC
G06Q10/101G06F40/166G06F40/197
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 12,361,381
App. No.
17/676,055
Granted
Jul 15, 2025
Kind
B2
Abstract

A method for providing a binary data file to at least a first client application and a second client application includes receiving a first request to access the binary data file from the first client application, and identifying a first document model associated with the binary data file, wherein the first document model reflects edits made to the binary data file by the first client application and the second client application. The method further includes transmitting data corresponding to the first document model to the first client application, receiving, from the second client application, a second request indicating a modification to the binary data file, revising the first document model associated with the binary data file to include the modification to the binary data file, and transmitting data corresponding to the revised first document model to the second client application.

Claims (102)

1. A computer-implemented method for providing a binary data file to at least a first client application and a second client application, the method comprising:

receiving a first request to access the binary data file from the first client application;

upon determining that a document model associated with the binary data file does not exist, instructing the first client application to provide a first document model based on information regarding the binary data file, and transmitting data corresponding to the first document model to the second client application;

receiving a second request to access the binary data file from the first client application;

identifying the first document model associated with the binary data file, wherein the first document model reflects edits made to the binary data file by the first client application and the second client application;

transmitting data corresponding to the first document model to the first client application;

receiving, from the second client application, a third request indicating a modification to the binary data file;

revising the first document model associated with the binary data file to include the modification to the binary data file; and

transmitting data corresponding to the revised first document model to the second client application.

2. The method of claim 1 , wherein instructing the first client application to populate the first document model comprises:

providing the information regarding the binary data file to the first client application; and

instructing the first client application to populate an empty document model based on the information regarding the binary data file.

3. The method of claim 1 , wherein the first document model is generated by the first client application upon determining a first logical structure of the binary data file such that any edits made to the binary data file by the first client application and the second client application are reflected in the first document model.

4. The method of claim 3 , further comprising,

receiving a fourth request to access the binary data file from the second client application;

determining whether a second document model corresponding to the binary data file exists, wherein the second document model is generated by the second client application upon determining a second logical structure of the binary data file such that any edits made to the binary data file by the first client application and the second client application are reflected in the second document model; and

in response to determining that the second document model exists, transmitting data corresponding to the second document model to the second client application.

5. The method of claim 4 , further comprising:

in response to determining that the second document model does not exist, generating the second document model corresponding to the binary data file and associated with the second client application.

6. The method of claim 4 , wherein the second document model is a revised first document model, and wherein the method further comprises:

receiving a modification to the first document model from the first client application;

revising the first document model based on the modification to the first document model; and

transmitting the revised first document model to the second client application.

7. The method of claim 4 , further comprising:

determining whether the second document model matches content of the binary data file;

determining whether the binary data file was last modified by the second client application; and

performing one of the following:

(i) in response to determining that the second document model matches the content of the binary data file or that the binary data file was last modified by the second client application, transmitting data corresponding to the second document model to the second client application; or

(ii) in response to determining that the second document model does not match the content of the binary data file and that the binary data file was not last modified by the second client application:

generating a new second document model; and

transmitting the new second document model to the second client application.

8. The method of claim 1 , further comprising:

receiving a first modification to the first document model from the first client application; and

revising the binary data file based on the first modification.

9. The method of claim 8 , further comprising:

receiving a subscription request associated with the binary data file and identifying a third client application; and

in response to the revision of the binary data file, transmitting a notification regarding the revision to the third client application based on the subscription request.

10. The method of claim 9 , further comprising modifying, based on the revised binary data file, a second document model corresponding to the binary data file and associated with the second client application.

11. The method of claim 9 , further comprising:

receiving, from the second client application, a second modification to a second document model corresponding to the binary data file and associated with the second client application;

determining whether the binary data file was revised by an application other than the second client application after data corresponding to the second document model was transmitted to the second client application;

in response to determining that the binary data file was revised by an application other than the second client application after data corresponding to the second document model was transmitted to the second client application, transmitting a message regarding the revised binary data file to the second client application; and

receiving a response from the second client application.

12. The method of claim 11 , wherein the response from the second client application is at least one of: a command to overwrite the revised binary data file with a binary data file corresponding to the second document model, a command to generate a new binary data file corresponding to the second document model and to associate the second document model with the new binary data file, or a command to combine the second document model with the revised binary data file.

13. The method of claim 1 , wherein the first client application and the second client application are different client applications or different instances of a same client application.

14. A system to provide a binary data file to at least a first client application and a second client application, the system comprising:

a memory; and

one or more processors, coupled to the memory to perform operations comprising:

receiving a first request to access the binary data file from the first client application;

upon determining that a document model associated with the binary data file does not exist, instructing the first client application to provide a first document model based on information regarding the binary data file, and transmitting data corresponding to the first document model to the second client application;

receiving a second request to access the binary data file from the first client application;

identifying the first document model associated with the binary data file, wherein the first document model reflects edits made to the binary data file by the first client application and the second client application;

transmitting data corresponding to the first document model to the first client application;

receiving, from the second client application, a third request indicating a modification to the binary data file;

revising the first document model associated with the binary data file to include the modification to the binary data file; and

transmitting data corresponding to the revised first document model to the second client application.

15. The system of claim 14 , wherein instructing the first client application to populate the first document model comprises:

providing the information regarding the binary data file to the first client application; and

instructing the first client application to populate an empty document model based on the information regarding the binary data file.

16. The system of claim 14 , wherein the first document model is generated by the first client application upon determining a first logical structure of the binary data file such that any edits made to the binary data file by the first client application and the second client application are reflected in the first document model.

17. The system of claim 16 , the operations further comprising,

receiving a fourth request to access the binary data file from the second client application;

determining whether a second document model corresponding to the binary data file exists, wherein the second document model is generated by the second client application upon determining a second logical structure of the binary data file such that any edits made to the binary data file by the first client application and the second client application are reflected in the second document model; and

in response to determining that the second document model exists, transmitting data corresponding to the second document model to the second client application.

18. The system of claim 14 , the operations further comprising:

receiving a first modification to the first document model from the first client application;

revising the binary data file based on the first modification;

receiving a subscription request associated with the binary data file and identifying a third client application; and

in response to the revision of the binary data file, transmitting a notification regarding the revision to the third client application based on the subscription request.

19. A non-transitory computer-readable medium comprising instructions, which when executed by a processor, cause the processor to perform operations to provide a binary data file to at least a first client application and a second client application, the operations comprising:

receiving a first request to access the binary data file from the first client application;

upon determining that a document model associated with the binary data file does not exist, instructing the first client application to provide a first document model based on information regarding the binary data file, and transmitting data corresponding to the first document model to the second client application;

receiving a second request to access the binary data file from the first client application;

identifying the first document model associated with the binary data file, wherein the first document model reflects edits made to the binary data file by the first client application and the second client application;

transmitting data corresponding to the first document model to the first client application;

receiving, from the second client application, a third request indicating a modification to the binary data file;

revising the first document model associated with the binary data file to include the modification to the binary data file; and

transmitting data corresponding to the revised first document model to the second client application.

20. The non-transitory computer-readable medium of claim 19 , wherein the first document model is generated by the first client application upon determining a first logical structure of the binary data file such that any edits made to the binary data file by the first client application and the second client application are reflected in the first document model, and wherein the operations further comprise:

receiving a fourth request to access the binary data file from the second client application;

determining whether a second document model corresponding to the binary data file exists, wherein the second document model is generated by the second client application upon determining a second logical structure of the binary data file such that any edits made to the binary data file by the first client application and the second client application are reflected in the second document model; and

performing one of the following:

(i) in response to determining that the second document model exists, transmitting data corresponding to the second document model to the second client application; or

(ii) in response to determining that the second document model does not exist, generating the second document model corresponding to the binary data file and associated with the second client application.

21. The non-transitory computer-readable medium of claim 19 , wherein the second document model is a revised first document model, and wherein the operations further comprise:

receiving a modification to the first document model from the first client application;

revising the first document model based on the modification to the first document model; and

transmitting the revised first document model to the second client application.

22. The non-transitory computer-readable medium of claim 19 , the operations further comprising:

determining whether the second document model matches the content of the binary data file;

determining whether the binary data file was last modified by the second client application; and

performing one of the following:

(i) in response to determining that the second document model matches the content of the binary data file or that the binary data file was last modified by the second client application, transmitting data corresponding to the second document model to the second client application; or

(ii) in response to determining that the second document model does not match the content of the binary data file and that the binary data file was not last modified by the second client application:

generating a new second document model; and

transmitting the new second document model to the second client application.

23. The non-transitory computer-readable medium of claim 19 , the operations further comprising:

receiving a first modification to the first document model from the first client application;

revising the binary data file based on the first modification;

receiving a subscription request associated with the binary data file and identifying a third client application;

in response to the revision of the binary data file, transmitting a notification regarding the revision to the third client application based on the subscription request; and

modifying, based on the revised binary data file, a second document model corresponding to the binary data file and associated with the second client application.

Assignments (2)
CHANGE OF NAME Recorded Aug 25, 2022
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 061327/0241 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2022
From: CAIRNS, BRIAN LEWIS; DAY-RICHTER, JOHN
To: GOOGLE INC.
Reel/Frame 060198/0795 →
Continuity (4)
Continuation 16595386 · Oct 7, 2019
Continuation 14213839 · Mar 14, 2014
Provisional Application 61784898 · Mar 14, 2013
Related Publication 20220245588A1 · Aug 4, 2022
References Cited (19)
US 7457830B1 · Coulter et al. · 2008 [cited by applicant]
US 7647415B1 · Sandoz et al. · 2010 [cited by applicant]
US 7660790B1 · Batterywala et al. · 2010 [cited by applicant]
US 7962481B2 · Ganesh · 2011 [cited by examiner]
US 9367579B1 · Kumar et al. · 2016 [cited by applicant]
US 20030097410A1 · Atkins et al. · 2003 [cited by applicant]
US 20040015860A1 · Craft et al. · 2004 [cited by applicant]
US 20040078370A1 · Acree et al. · 2004 [cited by applicant]
US 20050138109A1 · Redlich et al. · 2005 [cited by applicant]
US 20050171970A1 · Ozzie et al. · 2005 [cited by applicant]
US 20070136396A1 · Kulkarni et al. · 2007 [cited by applicant]
US 20080154983A1 · Lee · 2008 [cited by examiner]
US 20080177759A1 · Sodhi · 2008 [cited by examiner]
US 20110131500A1 · Ohazama · 2011 [cited by examiner]
US 20130246906A1 · Hamon · 2013 [cited by examiner]
US 20140244713A1 · Grimm et al. · 2014 [cited by applicant]
US 20150193404A1 · Danziger · 2015 [cited by examiner]
PCT/US2014/029763 International Search Report dated Jul. 29, 2014, 4 pages. [cited by applicant]
Written Opinion of the International Search Authority for International Application No. PCT/US2014/029763, mailed Jul. 29, 2014, 4 pages. [cited by applicant]