File tree 3 files changed +40
-25
lines changed
3 files changed +40
-25
lines changed Original file line number Diff line number Diff line change @@ -118,6 +118,7 @@ skip-if = os == "linux" && bits == 64 && os_version = "18.04" # Bug 1614739
118
118
[browser_isSynthetic.js]
119
119
[browser_keyevents_during_autoscrolling.js]
120
120
[browser_label_textlink.js]
121
+ [browser_remoteness_change_listeners.js]
121
122
[browser_suspend_videos_outside_viewport.js]
122
123
support-files =
123
124
file_outside_viewport_videos.html
Original file line number Diff line number Diff line change
1
+ /* Any copyright is dedicated to the Public Domain.
2
+ http://creativecommons.org/publicdomain/zero/1.0/ */
3
+
4
+ "use strict" ;
5
+
6
+ /**
7
+ * Check that adding progress listeners to a browser doesn't break things
8
+ * when switching the remoteness of that browser.
9
+ */
10
+ add_task ( async function test_remoteness_switch_listeners ( ) {
11
+ await BrowserTestUtils . withNewTab ( "about:support" , async function ( browser ) {
12
+ let wpl ;
13
+ let navigated = new Promise ( resolve => {
14
+ wpl = {
15
+ onLocationChange ( ) {
16
+ is ( browser . currentURI . spec , "https://example.com/" ) ;
17
+ if ( browser . currentURI ?. spec == "https://example.com/" ) {
18
+ resolve ( ) ;
19
+ }
20
+ } ,
21
+ QueryInterface : ChromeUtils . generateQI ( [
22
+ Ci . nsISupportsWeakReference ,
23
+ Ci . nsIWebProgressListener2 ,
24
+ Ci . nsIWebProgressListener ,
25
+ ] ) ,
26
+ } ;
27
+ browser . addProgressListener ( wpl ) ;
28
+ } ) ;
29
+
30
+ let loaded = BrowserTestUtils . browserLoaded (
31
+ browser ,
32
+ null ,
33
+ "https://example.com/"
34
+ ) ;
35
+ BrowserTestUtils . loadURI ( browser , "https://example.com/" ) ;
36
+ await Promise . all ( [ loaded , navigated ] ) ;
37
+ browser . removeProgressListener ( wpl ) ;
38
+ } ) ;
39
+ } ) ;
Original file line number Diff line number Diff line change 920
920
) ;
921
921
}
922
922
923
- /**
924
- * Move the previously-tracked web progress listeners to this <browser>'s
925
- * current WebProgress.
926
- */
927
- restoreProgressListeners ( ) {
928
- let listeners = this . progressListeners ;
929
- this . progressListeners = [ ] ;
930
-
931
- for ( let { weakListener, mask } of listeners ) {
932
- let listener = weakListener . get ( ) ;
933
- if ( listener ) {
934
- this . addProgressListener ( listener , mask ) ;
935
- }
936
- }
937
- }
938
-
939
923
onPageHide ( aEvent ) {
940
924
if ( ! this . docShell || ! this . fastFind ) {
941
925
return ;
1050
1034
* the <browser> element may not be initialized yet.
1051
1035
*/
1052
1036
1053
- let oldNavigation = this . _remoteWebNavigation ;
1054
1037
this . _remoteWebNavigation = new LazyModules . RemoteWebNavigation ( this ) ;
1055
1038
1056
1039
// Initialize contentPrincipal to the about:blank principal for this loadcontext
1064
1047
// we should re-evaluate the CSP here.
1065
1048
this . _csp = null ;
1066
1049
1067
- if ( ! oldNavigation ) {
1068
- // If we weren't remote, then we're transitioning from local to
1069
- // remote. Add all listeners from the previous <browser> to the new
1070
- // RemoteWebProgress.
1071
- this . restoreProgressListeners ( ) ;
1072
- }
1073
-
1074
1050
this . messageManager . loadFrameScript (
1075
1051
"chrome://global/content/browser-child.js" ,
1076
1052
true
1119
1095
1120
1096
if ( ! this . isRemoteBrowser ) {
1121
1097
this . _remoteWebNavigation = null ;
1122
- this . restoreProgressListeners ( ) ;
1123
1098
this . addEventListener ( "pagehide" , this . onPageHide , true ) ;
1124
1099
}
1125
1100
}
You can’t perform that action at this time.
0 commit comments