@@ -43,7 +43,10 @@ add_task(async function test_unhandled_campaign_action() {
4343 const TEST_PROTON_JSON = JSON . stringify ( TEST_PROTON_CONTENT ) ;
4444
4545 await setAboutWelcomePref ( true ) ;
46- await pushPrefs ( [ "browser.aboutwelcome.screens" , TEST_PROTON_JSON ] ) ;
46+ await pushPrefs (
47+ [ "browser.aboutwelcome.screens" , TEST_PROTON_JSON ] ,
48+ [ "browser.shell.checkDefaultBrowser" , true ]
49+ ) ;
4750
4851 AttributionCode . _clearCache ( ) ;
4952 const data = await AttributionCode . getAttrDataAsync ( ) ;
@@ -90,7 +93,50 @@ add_task(async function test_unhandled_campaign_action() {
9093 await ASRouter . forceAttribution ( "" ) ;
9194 Services . prefs . clearUserPref ( DID_HANDLE_CAMAPAIGN_ACTION_PREF ) ;
9295 Services . prefs . clearUserPref ( "browser.aboutwelcome.screens" ) ;
93-
94- sandbox . restore ( ) ;
9596 } ) ;
97+
98+ sandbox . restore ( ) ;
99+ } ) ;
100+
101+ add_task ( async function test_campaign_action_honors_default_browser_pref ( ) {
102+ const sandbox = sinon . createSandbox ( ) ;
103+ const handleActionStub = sandbox
104+ . stub ( SpecialMessageActions , "handleAction" )
105+ . resolves ( ) ;
106+
107+ Services . prefs . clearUserPref ( DID_HANDLE_CAMAPAIGN_ACTION_PREF ) ;
108+ await AttributionCode . deleteFileAsync ( ) ;
109+ await ASRouter . forceAttribution ( TEST_ATTRIBUTION_DATA ) ;
110+
111+ await setAboutWelcomePref ( true ) ;
112+ await pushPrefs (
113+ [ "browser.aboutwelcome.screens" , JSON . stringify ( TEST_PROTON_CONTENT ) ] ,
114+ [ "browser.shell.checkDefaultBrowser" , false ]
115+ ) ;
116+
117+ AttributionCode . _clearCache ( ) ;
118+ const data = await AttributionCode . getAttrDataAsync ( ) ;
119+
120+ Assert . equal (
121+ data . campaign ,
122+ "set_default_browser" ,
123+ "Attribution campaign should be set"
124+ ) ;
125+
126+ let tab = await BrowserTestUtils . openNewForegroundTab (
127+ gBrowser ,
128+ "about:welcome" ,
129+ true
130+ ) ;
131+
132+ sinon . assert . notCalled ( handleActionStub ) ;
133+
134+ Assert . equal (
135+ Services . prefs . getBoolPref ( DID_HANDLE_CAMAPAIGN_ACTION_PREF , false ) ,
136+ false ,
137+ "Campaign action is left unhandled so it can run if the pref is restored"
138+ ) ;
139+
140+ BrowserTestUtils . removeTab ( tab ) ;
141+ sandbox . restore ( ) ;
96142} ) ;
0 commit comments