@@ -1951,15 +1951,19 @@ impl ScriptThread {
19511951 ) ,
19521952 ConstellationControlMsg :: PostMessage {
19531953 target : target_pipeline_id,
1954+ source_parent,
19541955 source : source_pipeline_id,
19551956 source_browsing_context,
1957+ source_top_level_browsing_context,
19561958 target_origin : origin,
19571959 source_origin,
19581960 data,
19591961 } => self . handle_post_message_msg (
19601962 target_pipeline_id,
1963+ source_parent,
19611964 source_pipeline_id,
19621965 source_browsing_context,
1966+ source_top_level_browsing_context,
19631967 origin,
19641968 source_origin,
19651969 data,
@@ -2605,8 +2609,10 @@ impl ScriptThread {
26052609 fn handle_post_message_msg (
26062610 & self ,
26072611 pipeline_id : PipelineId ,
2612+ source_parent : Option < BrowsingContextId > ,
26082613 source_pipeline_id : PipelineId ,
2609- source_browsing_context : TopLevelBrowsingContextId ,
2614+ source_browsing_context : BrowsingContextId ,
2615+ source_top_level_browsing_context : TopLevelBrowsingContextId ,
26102616 origin : Option < ImmutableOrigin > ,
26112617 source_origin : ImmutableOrigin ,
26122618 data : StructuredSerializedData ,
@@ -2619,8 +2625,9 @@ impl ScriptThread {
26192625 // send the required info as part of postmessage instead.
26202626 let source = match self . remote_window_proxy (
26212627 & * window. global ( ) ,
2628+ source_top_level_browsing_context,
26222629 source_browsing_context,
2623- source_pipeline_id ,
2630+ source_parent ,
26242631 None ,
26252632 ) {
26262633 None => {
@@ -3082,20 +3089,20 @@ impl ScriptThread {
30823089 & self ,
30833090 global_to_clone : & GlobalScope ,
30843091 top_level_browsing_context_id : TopLevelBrowsingContextId ,
3085- pipeline_id : PipelineId ,
3092+ browsing_context_id : BrowsingContextId ,
3093+ parent : Option < BrowsingContextId > ,
30863094 opener : Option < BrowsingContextId > ,
30873095 ) -> Option < DomRoot < WindowProxy > > {
3088- let ( browsing_context_id, parent_pipeline_id) =
3089- self . ask_constellation_for_browsing_context_info ( pipeline_id) ?;
30903096 if let Some ( window_proxy) = self . window_proxies . borrow ( ) . get ( & browsing_context_id) {
30913097 return Some ( DomRoot :: from_ref ( window_proxy) ) ;
30923098 }
30933099
3094- let parent_browsing_context = parent_pipeline_id . and_then ( |parent_id | {
3100+ let parent_browsing_context = parent . and_then ( |parent_bc | {
30953101 self . remote_window_proxy (
30963102 global_to_clone,
30973103 top_level_browsing_context_id,
3098- parent_id,
3104+ parent_bc,
3105+ None ,
30993106 opener,
31003107 )
31013108 } ) ;
@@ -3147,12 +3154,18 @@ impl ScriptThread {
31473154 } ) ;
31483155 let parent_browsing_context = match ( parent_info, iframe. as_ref ( ) ) {
31493156 ( _, Some ( iframe) ) => Some ( window_from_node ( & * * iframe) . window_proxy ( ) ) ,
3150- ( Some ( parent_id) , _) => self . remote_window_proxy (
3151- window. upcast ( ) ,
3152- top_level_browsing_context_id,
3153- parent_id,
3154- opener,
3155- ) ,
3157+ ( Some ( parent_id) , _) => {
3158+ let ( browsing_context_id, _) = self
3159+ . ask_constellation_for_browsing_context_info ( parent_id)
3160+ . expect ( "Couldn't get bc info for parent." ) ;
3161+ self . remote_window_proxy (
3162+ window. upcast ( ) ,
3163+ top_level_browsing_context_id,
3164+ browsing_context_id,
3165+ None ,
3166+ opener,
3167+ )
3168+ } ,
31563169 _ => None ,
31573170 } ;
31583171
0 commit comments