Closed Bug 1251819 Opened 4 years ago Closed 2 years ago

"Default apps" cannot set Firefox as default correctly if the Windows user is a local account but Settings app is signing in with a Microsoft account

Categories

(Web Compatibility :: Desktop, defect)

All
Windows 10
defect
Not set

Tracking

(platform-rel +, firefox48 affected, firefox49 affected, firefox50 affected, firefox51 affected)

RESOLVED FIXED
Tracking Status
platform-rel --- +
firefox48 --- affected
firefox49 --- affected
firefox50 --- affected
firefox51 --- affected

People

(Reporter: emk, Assigned: cyberdees)

References

(Blocks 1 open bug)

Details

(Whiteboard: [contactready][platform-rel-Microsoft][platform-rel-Edge][platform-rel-Windows])

Attachments

(1 file)

Steps to reproduce:
1. Make sure Insider Preview build 11082 or later is installed.
2. Install Firefox. Firefox will bring up the default browser prompt.
3. Click "Use Firefox as my default browser". "Default apps" will open.
4. Click the Microsoft Edge icon and select Firefox from the popup.
5. Press Ctrl+R and type <http://www.mozilla.org/>. Firefox will open the web page (as expected).
6. Press Ctrl+R and type <https://www.mozilla.org/>.
7. Click "Set defaults by app" at the bottom of "Default apps". "Default Programs" control panel will open.
8. Select Firefox and click "Choose defaults for this program".

Actual result:
In step 4, no visual change will happen. If you reopen Settings and go to System > Default apps again, you will see [+] icon and "Choose a default" message under the "Web browser" section.
In step 6, "How do you want to open this?" popup will open and promote Microsoft Edge. If you forget to check "Always use this app" when selecting Firefox and type "https://www.mozilla.org/" into the Run dialog again, Microsoft Edge will open without prompt.
In step 8, only "HTTP" will be changed the default handler. The default handler for "HTTPS", ".htm", and ".html" will remain Microsoft Edge.

Expected result:
In step 4, the Microsoft Edge icon should be changed to the Firefox icon.
In step 6, Firefox should open the web page.
In step 8, "HTTP", "HTTPS", ".htm", and ".html" handlers should be changed to Firefox.

The release version of Windows 10 (build 10586) works as expected. This is broken since at least build 11082.

Note: this is not our fault. This bug is reproducible even if you don't install Firefox and replace "Firefox" with "Internet Explorer" in the STR. This bug is reproducible even immediately after "Reset PC". But if Microsoft didn't fix this before the Redstone release, we will have to workaround the problem somehow (e.g. use "Default Programs" control panel instead of "Default apps").

I sent a feeback: Windows-Feedback:?contextid=53&feedbackid=4e299558-233d-4098-8df6-2d604670a048&form=1&src=2
Please upvote.
Blocks: windows-10
FWIW, I can't reproduce this on build 11099. Perhaps there are additional relevant circumstances/steps to this? Or it stops happening after some other changes to default apps (this machine has had win10 on it for a while now...) ?
I could reproduce this even if I did a clean install build 10586 and update it to the latest build (14271).
Does it work correctly if you set Firefox as default from Firefox instead of the installer?
Flags: needinfo?(VYV03354)
The installer has no option to make Firefox default on Windows 10. I set Firefox as default from Firefox preferences (sorry, STR was not clear about it).
Flags: needinfo?(VYV03354)
According to some reddit comments, this change has been ported into Build 10586.122 (a.k.a. KB3140743). but I could not reproduce this on my main (non-VM) PC.

(In reply to :Gijs Kruitbosch from comment #1)
> Or it stops happening after some other
> changes to default apps (this machine has had win10 on it for a while
> now...) ?

So this is plausible. But I don't found what made default apps work yet.
When I create a new user, Default apps worked on the user. This is very similar to this report:
https://answers.microsoft.com/en-us/windows/forum/windows_10-other_settings/cannot-change-app-defaults/7aaab035-263b-49ab-8544-93d9c5fe2069
An unresolved question is why clean install does not solve the problem.
Maybe I found the condition. If the user profile had been associated with a Microsoft account and then it was disassociated from the Microsoft account, Default apps will no longer work. When I associated the profile with the Microsoft account again, Default apps started to work. When I disassociated again, Default apps stopped to work again.
I don't yet found a way how to make Default apps work with a local account again without recreating the user.
If only Settings app signs in a Microsoft account, Default apps stops to work.
Updated STR:
1. Create a brand-new local account.
2. Sign in the created account.
3. Make sure Default apps work.
4. Go to Settings > Update & Security > Windows Update > Advanced Options.
5. Click [Get started] under the [Get Insider Preview builds] section.
6. When Windows asks your password, do not enter the password and click "Sign in to just this app instead".
7. Sign out the account.
8. Sign in the account again.
9. Follow the STR in comment #0.

To restore the Default apps function:
1. Go to Settings > Accounts > Email & app accounts > Accounts used by other apps.
2. Remove the Microsoft account.
3. Sign out and sign in.

Gijs, could you reproduce this with the updated steps?
Flags: needinfo?(gijskruitbosch+bugs)
(In reply to Masatoshi Kimura [:emk] from comment #9)
> Gijs, could you reproduce this with the updated steps?

I'm very sorry for the delay. I did not get to this today, and I'd like to do this on my VM, which is at home (and I am not). There are some public holidays here and I'm going to be away myself, so it's likely I won't get to this until Wednesday next week. Again, apologies for the delay. If this is urgent you could ask :jaws or :dolske if they can reproduce.
(In reply to Masatoshi Kimura [:emk] from comment #9)
> If only Settings app signs in a Microsoft account, Default apps stops to
> work.
> Updated STR:
> 1. Create a brand-new local account.
> 2. Sign in the created account.
> 3. Make sure Default apps work.
> 4. Go to Settings > Update & Security > Windows Update > Advanced Options.
> 5. Click [Get started] under the [Get Insider Preview builds] section.

I don't see a [Get Insider Preview builds] section or [Get started] link when I create a secondary account and log in with that account.
I forgot to say making the new account an admin.
(In reply to :Gijs Kruitbosch from comment #11)
> (In reply to Masatoshi Kimura [:emk] from comment #9)
> > If only Settings app signs in a Microsoft account, Default apps stops to
> > work.
> > Updated STR:
> > 1. Create a brand-new local account.
> > 2. Sign in the created account.
> > 3. Make sure Default apps work.
> > 4. Go to Settings > Update & Security > Windows Update > Advanced Options.
> > 5. Click [Get started] under the [Get Insider Preview builds] section.
> 
> I don't see a [Get Insider Preview builds] section or [Get started] link
> when I create a secondary account and log in with that account.

OK, if I grant the account admin privileges, I get that section and a "Take Control" button... continuing to see if this gets me somewhere in reproducing this issue.
(In reply to Masatoshi Kimura [:emk] from comment #9)
> If only Settings app signs in a Microsoft account, Default apps stops to
> work.
> Updated STR:
> 1. Create a brand-new local account.
> 2. Sign in the created account.
> 3. Make sure Default apps work.
> 4. Go to Settings > Update & Security > Windows Update > Advanced Options.
> 5. Click [Get started] under the [Get Insider Preview builds] section.
> 6. When Windows asks your password, do not enter the password and click
> "Sign in to just this app instead".
> 7. Sign out the account.
> 8. Sign in the account again.

After this, I clicked the 'reset to the Microsoft recommended defaults' link, and that seems to have worked.

> 9. Follow the STR in comment #0.

Indeed, at this point, the functionality is broken.

> To restore the Default apps function:
> 1. Go to Settings > Accounts > Email & app accounts > Accounts used by other
> apps.
> 2. Remove the Microsoft account.
> 3. Sign out and sign in.

I somehow had to do this twice, but then yes, I could reproduce this bug. I reproduced on the regular 1511 release with updates because that's where my VM seems to have gotten stuck. I'll see if I can re-convince it to start getting insider updates now that I've messed about the accounts as I have. :-)

I'm moving this to tech evangelism as this is pretty clearly not our bug. Given the Windows 10 restrictions around defaults I doubt that we can detect this situation from a desktop/"old-school" (not universal) app, either... :-\

Is there any progress on the MS issue you reported, and/or should we try to contact some of the Windows 10 folks we've been in touch with before it was released?

(PS: thanks for tracking this down, and I'm pretty amazed that you were able to get such exact STR for the issue - kudos!)
Component: Shell Integration → Desktop
Flags: needinfo?(gijskruitbosch+bugs) → needinfo?(VYV03354)
Product: Firefox → Tech Evangelism
(In reply to :Gijs Kruitbosch from comment #14)
> I somehow had to do this twice, but then yes, I could reproduce this bug.

Err, I meant, I had to remove the account, sign out, sign back in, twice, to get it to work again after it was broken.
(In reply to :Gijs Kruitbosch from comment #14)
> Is there any progress on the MS issue you reported, and/or should we try to
> contact some of the Windows 10 folks we've been in touch with before it was
> released?

I sent a feedback every time a new Insider Preview was released, but I had no progress at the moment. If Mozilla has a contact other than the feedback app, I think we should try it.
Flags: needinfo?(VYV03354)
Summary: "Default apps" cannot set Firefox as default correctly on Insider Preview → "Default apps" cannot set Firefox as default correctly on Insider Preview with local account
Apparently the Settings app thinks the current Windows logon is connected to a Microsoft account even if actually it is not. So the Settings app will try to access Windows Identity Provider and it will fail on changing default apps.

IsConnectedAtLogon is undocumented, but looks like it matches Settings app's belief.
Attachment #8736680 - Flags: review?(gijskruitbosch+bugs)
Once Microsoft has fixed the bug, IsConnectedAtLogon is expected to be zero unless the Windows logon is a Microsoft account. So the added code path will never run anymore.
:dolske, you filed bug 1240892. Do you have a contact with some Microsoft folks? Given that Microsoft forces us to use the Settings app, they should provide a decent Default apps functionality.
Flags: needinfo?(dolske)
Comment on attachment 8736680 [details] [diff] [review]
Use the classic Control Panel if the Windows logon is a Microsoft account and the Settings app is signing in

I don't feel comfortable reviewing this. Maybe Jim can help?
Attachment #8736680 - Flags: review?(gijskruitbosch+bugs) → review?(jmathies)
(In reply to Masatoshi Kimura [:emk] from comment #18)
> Once Microsoft has fixed the bug, IsConnectedAtLogon is expected to be zero
> unless the Windows logon is a Microsoft account. So the added code path will
> never run anymore.

Ok, relying on  this.
Comment on attachment 8736680 [details] [diff] [review]
Use the classic Control Panel if the Windows logon is a Microsoft account and the Settings app is signing in

Review of attachment 8736680 [details] [diff] [review]:
-----------------------------------------------------------------

::: browser/components/shell/nsWindowsShellService.cpp
@@ +643,5 @@
>      pAARUI->Release();
>    }
>    return SUCCEEDED(hr) ? NS_OK : NS_ERROR_FAILURE;
>  }
> + 

nit - ws at the top of the file

@@ +660,5 @@
> +  if (!PathAppendW(controlEXEPath, controlEXE)) {
> +    return NS_ERROR_FAILURE;
> +  }
> +
> +  WCHAR params[] = L"control.exe /name Microsoft.DefaultPrograms /page pageDefaultProgram";

Since we're relying on a Vista+ feature here, lets check the os in this routine and abort if someone calls it on the wrong os.

https://msdn.microsoft.com/en-us/library/windows/desktop/cc144191(v=vs.85).aspx

@@ +713,5 @@
> +    return false;
> +  }
> +
> +  uint32_t value;
> +  rv = regKey->ReadIntValue(NS_LITERAL_STRING("IsConnectedAtLogon"), &value);

I wasn't able to find documentation about this through a google search. Do you have a reference?
Attachment #8736680 - Flags: review?(jmathies) → review+
https://hg.mozilla.org/integration/fx-team/rev/dbfc218a57449d4b3c0050322e47f83246600c48
Bug 1251819 - Use the classic Control Panel if the Settings app believes the current Windows logon is a Microsoft account while actually it is not. r=jimm
(In reply to Jim Mathies [:jimm] from comment #23)
> I wasn't able to find documentation about this through a google search. Do
> you have a reference?

No I found it by my own inspection.
This is only a workaround. Microsoft should fix Default apps.
Keywords: leave-open
(In reply to Masatoshi Kimura [:emk] from comment #19)
> :dolske, you filed bug 1240892. Do you have a contact with some Microsoft
> folks? Given that Microsoft forces us to use the Settings app, they should
> provide a decent Default apps functionality.

Unfortunately I don't think we have an appropriate contact for this kind of feedback.
Flags: needinfo?(dolske)
This is not really an issue for the WebCompat team, but probably cyberdees can have a contact with Microsoft to negotiate this issue.
Assignee: nobody → dchinniah
Status: NEW → ASSIGNED
Flags: needinfo?(dchinniah)
Whiteboard: [contactready]
(In reply to Karl Dubost :karlcow from comment #29)
> This is not really an issue for the WebCompat team, but probably cyberdees
> can have a contact with Microsoft to negotiate this issue.

We do indeed have a MSFT channel. Please contact myself and I can have the appropriate persons added to the group for further outreach.
Flags: needinfo?(dolske)
Flags: needinfo?(dchinniah)
Flags: needinfo?(VYV03354)
platform-rel: --- → ?
Whiteboard: [contactready] → [contactready][platform-rel-Microsoft][platform-rel-Edge]
Flags: needinfo?(dolske)
Duplicate of this bug: 1302023
Hardware: Unspecified → All
Flags: needinfo?(VYV03354)
platform-rel: ? → +
Here is a step-by-step instruction to reproduce the issue with the latest Insider Preview (build 14936). I sent the same instruction to :Gjis privately, but I'm also posting the message here for the record.

1. Go to [Settings] > [Accounts] > [Family & Other users].
2. Click [Add someone else to this PC] to open [How will this person
sign in?] dialog.
3. Click [The person I want to add doesn't have an email address] to
open [Let's create your account] dialog.
4. Click [Add a user without a Microsoft account].
5. Enter a username and click [Next] to close the dialog.
6. Select the created account under [Other users] section.
7. Click [Change account type] button to open the [Change account type]
dialog.
8  Select [Administrator] under [Account type] dropdown and click OK to
close the dialog.
9. Sign out from Start Menu.
10. Sign in with the created account.
11. Go to [Settings] > [Update & security] > [Windows Insider Program].
12. Click [Take control] under [Get Insider Preview builds] section.
13. Click [Fix me](?) button (sorry, I'm uncertain about the exact
English word here).
14. Click [Sign in].
15. Enter email address and password and click [Sign in]. I used the
same address as my main account.
16. Click [Sign in to just this app instead].
17. Sign out and sign in again.
18. Go to [Settings] > [System] > [Default apps]. [Choose default apps]
will no longer work.

Note: when this problem happens, The "IsConnectedAtLogon" registry value
under "HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations"
will have value 1. But changing this value will not fix the problem.
Whiteboard: [contactready][platform-rel-Microsoft][platform-rel-Edge] → [contactready][platform-rel-Microsoft][platform-rel-Edge][platform-rel-Windows]
With build 14955, [Fix me] button is no longer displayed after step 12 in comment #32. Take the following steps instead.
13' Sign out and sign in.
14' Click [Link a Microsoft account] under the [Windows Insider account] section.
15' Enter email address and password and click [Sign in] in the [Add your Microsoft account] dialog.
16' Click [Sign in to just this app instead].
17' Sign out and sign in once again.

Note: I could no longer select the Insider Level after taking the steps. The drop down that selects ring was disabled and it was fixed on "Slow". I had to rollback the VM snapshot to restore ability to choose the Fast ring. Something is pretty buggy...

And the bug is still present. Choose default apps do not work yet.
Looks like Insider Preview build 14965 fixed this.
By the way, this bug is reproducible without using Insider Preview builds as follows. I confirmed it with build 14393.447:
1. Sign in with a local account user.
2. Go to [Settings] > [Accounts].
3. Click [Sign in with a Microsoft account instead].
4. Enter your mail address and password, then click [Sign in].
5. Enter the current Windows password and click [Next].
6. Set a PIN if you prefer.
7. Sign out and Sign in.
8. Go to [Settings] > [Accounts].
9. Click [Sign in with a local account instead].
10. Enter the current password and click [Next].
11. Click [Next]. (You don't have to change the prefilled user name.)
12. Click [Sign out and finish].
13. Sign in again.
Summary: "Default apps" cannot set Firefox as default correctly on Insider Preview with local account → "Default apps" cannot set Firefox as default correctly if the Windows user is a local account but Settings app is signing in with a Microsoft account
(In reply to Masatoshi Kimura [:emk] from comment #35)
> By the way, this bug is reproducible without using Insider Preview builds as
> follows. I confirmed it with build 14393.447:

Of course, I cannot test the fix until a new non-Insider Preview build (i.e. Creators Update) is released :)
Rank: 1
(In reply to Masatoshi Kimura [:emk] from comment #36)
> (In reply to Masatoshi Kimura [:emk] from comment #35)
> > By the way, this bug is reproducible without using Insider Preview builds as
> > follows. I confirmed it with build 14393.447:
> 
> Of course, I cannot test the fix until a new non-Insider Preview build (i.e.
> Creators Update) is released :)

Hi Masatoshi-san, is this something that can be closed now?
Flags: needinfo?(VYV03354)
Yes.
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Flags: needinfo?(VYV03354)
Resolution: --- → FIXED
Product: Tech Evangelism → Web Compatibility
You need to log in before you can comment on or make changes to this bug.