IP Library Granted Patent US 8,108,771
Granted Patent B2
US 8,108,771 · App. 12/207,430 · Granted Jan 31, 2012

Secure inter-module communication mechanism

Assignee: Yahoo! Inc.
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 8,108,771
App. No.
12/207,430
Granted
Jan 31, 2012
Kind
B2
Abstract

Methods, apparatuses, and systems directed to facilitating secure, structured interactions between code modules executing within the context of a document processed by a user agent, such as a browser client, that implements a domain security model. In a particular implementation, a module connector script or object loaded into a base document discovers listener modules and sender modules corresponding to different origins or domains, and passes information between them. In this manner, a listener module may consume and use information from a sender module located on the same page simply by having an end-user add both modules to a web page without having to explicitly define any form of interconnection. For example, a photo module may access a user account at a remote photo sharing site, and provide one or more photos to a module that renders the photographs in a slide show.

Claims (47)

1. A method comprising

receiving, at a first origin, a request for a web page from a user agent, wherein the user agent is operative to implement a domain security model disallowing interaction between content from different origins across inline frames;

accessing, responsive to the request for the web page, a data store to identify one or more module objects to be added to a structured document; and

transmitting, from the first origin, the structured document to the user agent, wherein the structured document comprises one or more module inline frame elements, wherein each module inline frame element is operative to cause the user agent to load a module document from a second origin within a module inline frame, wherein the module document comprises a messenger object and a module object of the one or more identified module objects;

wherein each messenger object is executable, within the context of the user agent, to

create, as a child element of the module inline frame element, a messenger inline frame element including a location attribute identifying the first origin and including a message queue;

add, responsive to a message sent by the module object of the module document, the message to the message queue; and

provide a new message detected in the message queue to the module object;

wherein the structured document further comprises a module connector object executable, within the context of the user agent, to

access message queues of one or more messenger inline frame elements to check for new messages; and

add, responsive to a new message, the new message to one or more message queues of corresponding messenger inline frame elements.

2. The method of claim 1 wherein the messenger object supports an application programming interface allowing the module object to register as a listener on a channel.

3. The method of claim 1 wherein the messenger object supports an application programming interface allowing the module object to register as a listener on a channel and declare a handler function for messages posted to the channel.

4. The method of claim 1 wherein the messenger object supports an application programming interface allowing the module object to post messages to a channel.

5. The method of claim 1 wherein the messenger object supports an application programming interface allowing the module object to register as a listener on a channel, and to post messages to a channel.

6. The method of claim 2 wherein the module connector object is operative to

selectively add, responsive to a new message posted to a channel, the new message to one or more message queues corresponding to messenger inline frame elements associated with module objects registered as listeners of the channel.

7. The method of claim 1 wherein the messenger object is further operative to expire messages previously added to the message queues of the messenger inline frame elements.

8. The method of claim 1 wherein the module connector object is further operative to expire messages previously added to the message queues of the location attributes of the messenger inline frame elements.

9. The method of claim 1 wherein the first origin and second origins are defined relative to a combination of a host name, port and protocol.

10. A method comprising

receiving, at a first origin, a request for a web page from a user agent, wherein the user agent is operative to implement a domain security model disallowing interaction between content from different origins across inline frames;

accessing, responsive to the request for the web page, a data store to identify one or more module objects to be added to a structured base document; and

transmitting, from the first origin, the structured base document to the user agent, wherein the structured base document comprises one or more module inline frame elements, wherein each module inline frame element is operative to cause the user agent to load a module document from a second origin within a module inline frame, wherein the module document comprises a messenger object and a module object of the one or more identified module objects;

wherein each messenger object is executable, within the context of the user agent, to

create, as a child element of the module inline frame element, a messenger inline frame element including a location attribute identifying the first origin and including a message queue;

support an application programming interface allowing the module object of the module document to register as a listener on a channel, declare a handler function for messages posted to the channel, and post messages to the channel;

add, responsive to a message sent by the module object, the message to the message queue; and

provide a new message detected in the message queue to the handler function of the module object;

wherein the base document further comprises a module connector object executable, within the context of the user agent, to

access message queues of one or more messenger inline frame elements to check for new messages; and

selectively add, responsive to a new message identifying a channel, the new message to the one or more message queues corresponding to respective messenger inline frame elements depending on the channel of the new message and the registered listeners on the channel.

11. A method comprising

receiving, at a first origin, a request for a web page from a user agent, wherein the user agent is operative to implement a domain security model disallowing interaction between content from different origins across inline frames;

accessing, responsive to the request for the web page, a data store to identify a first and a second module object to be added to a structured base document; and

transmitting, from the first origin, the structured base document to the user agent, wherein the structured base document comprises first and second module inline frame elements, wherein the first module inline frame element is operative to cause the user agent to load a first module document from a second origin within a first module inline frame, wherein the first module document comprises a first messenger object and the first module object, and wherein the second module inline frame element is operative to cause the user agent to load a second module document from a third origin within a second module inline frame, wherein the second module document comprises a second messenger object and the second module object;

wherein the first messenger object is executable, within the context of the user agent, to

create, as a child element of the first module inline frame element, a first messenger inline frame element including a first location attribute identifying the first origin and including a first message queue;

support an application programming interface allowing the first module object of the module document to register as a listener on a channel and declare a handler function for messages posted to the channel; and

provide a new message detected in the first message queue to the handler function of the module object;

wherein the second messenger object is executable, within the context of the user agent, to

create, as a child element of the second module inline frame element, a second messenger inline frame element including a second location attribute identifying the first origin and including a second message queue;

support an application programming interface allowing the second module object to post messages on the channel;

add, responsive to a message posted by the second module object, the message to the second message queue;

wherein the base document further comprises a module connector object executable, within the context of the user agent, to

access the second message queue to check for new messages; and

add, responsive to a new message identifying the channel, the new message to the first message queues.

Assignments (9)
CORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNOR NAME PREVIOUSLY RECORDED AT REEL: 052853 FRAME: 0153. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 29, 2021
From: R2 SOLUTIONS LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 056832/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED ON REEL 053654 FRAME 0254. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST GRANTED PURSUANT TO THE PATENT SECURITY AGREEMENT PREVIOUSLY RECORDED. Recorded Dec 30, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: R2 SOLUTIONS LLC
Reel/Frame 054981/0377 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jul 8, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
Reel/Frame 053654/0254 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 25, 2020
From: EXCALIBUR IP, LLC
To: R2 SOLUTIONS LLC
Reel/Frame 053459/0059 →
PATENT SECURITY AGREEMENT Recorded Jun 5, 2020
From: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MERTON ACQUISITION HOLDCO LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 052853/0153 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2016
From: YAHOO! INC.
To: EXCALIBUR IP, LLC
Reel/Frame 038950/0592 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2016
From: EXCALIBUR IP, LLC
To: YAHOO! INC.
Reel/Frame 038951/0295 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2016
From: YAHOO! INC.
To: EXCALIBUR IP, LLC
Reel/Frame 038383/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2008
From: CHIJIIWA, RYO; WASILESKI, ISAAC ALFRED HENRY
To: YAHOO! INC.
Reel/Frame 021505/0486 →
Continuity (2)
Continuation 11845538 · Aug 27, 2007
Related Publication 20090064183A1 · Mar 5, 2009