@@ -77,7 +77,7 @@ function tearDown() {
77
77
* synchronized manager instance used for testing.
78
78
*/
79
79
function getDefaultManagerInstance ( ) {
80
- return new fireauth . authStorage . Manager ( 'firebase' , ':' , false , true ) ;
80
+ return new fireauth . authStorage . Manager ( 'firebase' , ':' , false , true , true ) ;
81
81
}
82
82
83
83
@@ -404,7 +404,8 @@ function testGetSet_persistentStorage_noId() {
404
404
405
405
406
406
function testAddRemoveListeners_localStorage ( ) {
407
- var manager = new fireauth . authStorage . Manager ( 'name' , ':' , false , true ) ;
407
+ var manager =
408
+ new fireauth . authStorage . Manager ( 'name' , ':' , false , true , true ) ;
408
409
var listener1 = goog . testing . recordFunction ( ) ;
409
410
var listener2 = goog . testing . recordFunction ( ) ;
410
411
var listener3 = goog . testing . recordFunction ( ) ;
@@ -470,7 +471,8 @@ function testAddRemoveListeners_localStorage() {
470
471
471
472
472
473
function testAddRemoveListeners_localStorage_nullKey ( ) {
473
- var manager = new fireauth . authStorage . Manager ( 'name' , ':' , false , true ) ;
474
+ var manager =
475
+ new fireauth . authStorage . Manager ( 'name' , ':' , false , true , true ) ;
474
476
var listener1 = goog . testing . recordFunction ( ) ;
475
477
var listener2 = goog . testing . recordFunction ( ) ;
476
478
var listener3 = goog . testing . recordFunction ( ) ;
@@ -522,7 +524,8 @@ function testAddRemoveListeners_localStorage_ie10() {
522
524
function ( ) {
523
525
return true ;
524
526
} ) ;
525
- var manager = new fireauth . authStorage . Manager ( 'name' , ':' , false , true ) ;
527
+ var manager =
528
+ new fireauth . authStorage . Manager ( 'name' , ':' , false , true , true ) ;
526
529
var listener1 = goog . testing . recordFunction ( ) ;
527
530
var listener2 = goog . testing . recordFunction ( ) ;
528
531
var listener3 = goog . testing . recordFunction ( ) ;
@@ -637,7 +640,8 @@ function testAddRemoveListeners_indexeddb() {
637
640
function ( ) {
638
641
return mockIndexeddb ;
639
642
} ) ;
640
- var manager = new fireauth . authStorage . Manager ( 'name' , ':' , false , true ) ;
643
+ var manager =
644
+ new fireauth . authStorage . Manager ( 'name' , ':' , false , true , true ) ;
641
645
var listener1 = goog . testing . recordFunction ( ) ;
642
646
var listener2 = goog . testing . recordFunction ( ) ;
643
647
var listener3 = goog . testing . recordFunction ( ) ;
@@ -714,7 +718,8 @@ function testAddRemoveListeners_indexeddb_cannotRunInBackground() {
714
718
return mockIndexeddb ;
715
719
} ) ;
716
720
// Cannot run in the background.
717
- var manager = new fireauth . authStorage . Manager ( 'name' , ':' , false , false ) ;
721
+ var manager =
722
+ new fireauth . authStorage . Manager ( 'name' , ':' , false , false , true ) ;
718
723
var listener1 = goog . testing . recordFunction ( ) ;
719
724
var listener2 = goog . testing . recordFunction ( ) ;
720
725
var listener3 = goog . testing . recordFunction ( ) ;
@@ -757,7 +762,7 @@ function testAddRemoveListeners_indexeddb_cannotRunInBackground() {
757
762
758
763
function testSafariLocalStorageSync_newEvent ( ) {
759
764
var manager =
760
- new fireauth . authStorage . Manager ( 'firebase' , ':' , true , true ) ;
765
+ new fireauth . authStorage . Manager ( 'firebase' , ':' , true , true , true ) ;
761
766
// Simulate Safari bug.
762
767
stubs . replace (
763
768
fireauth . util ,
@@ -797,7 +802,7 @@ function testSafariLocalStorageSync_cannotRunInBackground() {
797
802
// Realistically only storage event should trigger here.
798
803
// Test when new data is added to storage.
799
804
var manager =
800
- new fireauth . authStorage . Manager ( 'firebase' , ':' , true , false ) ;
805
+ new fireauth . authStorage . Manager ( 'firebase' , ':' , true , false , true ) ;
801
806
// Simulate Safari bug.
802
807
stubs . replace (
803
808
fireauth . util ,
@@ -837,7 +842,7 @@ function testSafariLocalStorageSync_deletedEvent() {
837
842
// Realistically only storage event should trigger here.
838
843
// Test when old data is deleted from storage.
839
844
var manager =
840
- new fireauth . authStorage . Manager ( 'firebase' , ':' , true , true ) ;
845
+ new fireauth . authStorage . Manager ( 'firebase' , ':' , true , true , true ) ;
841
846
var key1 = { 'name' : 'authEvent' , 'persistent' : true } ;
842
847
// Simulate Safari bug.
843
848
stubs . replace (
@@ -879,7 +884,7 @@ function testRunsInBackground_storageEventMode() {
879
884
var key = { name : 'authEvent' , persistent : 'local' } ;
880
885
var storageKey = 'firebase:authEvent:appId1' ;
881
886
var manager = new fireauth . authStorage . Manager (
882
- 'firebase' , ':' , false , false ) ;
887
+ 'firebase' , ':' , false , false , true ) ;
883
888
var listener1 = goog . testing . recordFunction ( ) ;
884
889
var expectedEvent = {
885
890
type : 'signInViaPopup' ,
@@ -923,6 +928,49 @@ function testRunsInBackground_storageEventMode() {
923
928
}
924
929
925
930
931
+ function testRunsInBackground_webStorageNotSupported ( ) {
932
+ // Test when browser does not run in the background and web storage is not
933
+ // supported. Polling should not be turned on.
934
+ var key = { name : 'authEvent' , persistent : 'local' } ;
935
+ var storageKey = 'firebase:authEvent:appId1' ;
936
+ // Simulate manager doesn't support web storage and can't run in the
937
+ // background. Normally when a browser can't run in the background, polling is
938
+ // enabled.
939
+ var manager = new fireauth . authStorage . Manager (
940
+ 'firebase' , ':' , false , false , false ) ;
941
+ var listener1 = goog . testing . recordFunction ( ) ;
942
+ var expectedEvent = {
943
+ type : 'signInViaPopup' ,
944
+ eventId : '1234' ,
945
+ callbackUrl : 'http://www.example.com/#oauthResponse' ,
946
+ sessionId : 'SESSION_ID'
947
+ } ;
948
+
949
+ // Add listener.
950
+ manager . addListener ( key , appId , listener1 ) ;
951
+ // Test that polling function is not set by updating localStorage with some
952
+ // data. This should not happen realistically when web storage is disabled.
953
+ window . localStorage . setItem ( storageKey , JSON . stringify ( expectedEvent ) ) ;
954
+ // Run clock.
955
+ clock . tick ( 1000 ) ;
956
+ // Listener should not trigger.
957
+ assertEquals ( 0 , listener1 . getCallCount ( ) ) ;
958
+ // Clear storage.
959
+ window . localStorage . clear ( ) ;
960
+ // Run clock.
961
+ clock . tick ( 1000 ) ;
962
+ // Listener should not trigger.
963
+ assertEquals ( 0 , listener1 . getCallCount ( ) ) ;
964
+ // Save Auth event and confirm listener not triggered.
965
+ // This normally simulates polling.
966
+ window . localStorage . setItem ( storageKey , JSON . stringify ( expectedEvent ) ) ;
967
+ // Run clock.
968
+ clock . tick ( 1000 ) ;
969
+ // Listener should not trigger.
970
+ assertEquals ( 0 , listener1 . getCallCount ( ) ) ;
971
+ }
972
+
973
+
926
974
function testRunsInBackground_pollingMode ( ) {
927
975
// Test when browser does not run in the background while another tab is in
928
976
// foreground.
@@ -932,7 +980,7 @@ function testRunsInBackground_pollingMode() {
932
980
var key = { name : 'authEvent' , persistent : 'local' } ;
933
981
var storageKey = 'firebase:authEvent:appId1' ;
934
982
var manager = new fireauth . authStorage . Manager (
935
- 'firebase' , ':' , false , false ) ;
983
+ 'firebase' , ':' , false , false , true ) ;
936
984
var listener1 = goog . testing . recordFunction ( ) ;
937
985
var expectedEvent = {
938
986
type : 'signInViaPopup' ,
@@ -984,7 +1032,7 @@ function testRunsInBackground_currentTabChangesIgnored() {
984
1032
var key = { name : 'authEvent' , persistent : 'local' } ;
985
1033
var storageKey = 'firebase:authEvent:appId1' ;
986
1034
var manager = new fireauth . authStorage . Manager (
987
- 'firebase' , ':' , false , false ) ;
1035
+ 'firebase' , ':' , false , false , true ) ;
988
1036
var listener1 = goog . testing . recordFunction ( ) ;
989
1037
var expectedEvent = {
990
1038
type : 'signInViaPopup' ,
0 commit comments