Closed Bug 1399111 Opened 7 years ago Closed 7 years ago

new tab burst animation in background tabs is too eye catch

Categories

(Firefox :: Tabbed Browser, defect, P1)

57 Branch
defect

Tracking

()

VERIFIED FIXED
Firefox 58
Tracking Status
firefox56 --- unaffected
firefox57 --- verified
firefox58 --- verified

People

(Reporter: alice0775, Assigned: jaws)

References

(Depends on 1 open bug, )

Details

(Keywords: uiwanted, ux-tone, Whiteboard: [reserve-photon-animation])

Attachments

(2 files)

+++ This bug was initially created as a clone of Bug #1398442 +++

[Tracking Requested - why for this release]:

Suddenly, flickering of the background tab is in my eyes. While reading or entering something on the current tab



Reproducible: 100%

Steps To Reproduce:
1. Open 4-5 tabs in background (e.g. google.com, yahoo.com etc etc...)
2. Open web page in foreground tab[X] (i.e., data:text/html,<center><textarea cols=100></textarea></center> )

3. Start typing something in textarea in tab[X] while other tabs are still loading.


Actual Results:
Suddenly that flicker of background tab comes into my eyes

Expected Results:
The UI should not disturb user concentration. (except security warning).

I think that the flashing effect is bad.
I think a gradually changing UI is desirable(For example, the progress indicator gradually grows, and then it fade out at 100% and disappear)
Whiteboard: [photon-animation]
Whiteboard: [photon-animation] → [photon-animation] [triage]
Especially annoying, if the back ground tab has reload function with setInterval.
E.g. http://www.osaka-pref-rivercam.info/toubu/04.html (reloaded in every 1 minutes)
Amy, what are your thoughts? At the same time that it may be distracting, for other uses it may be helpful to know that the page content has just been updated.
Flags: needinfo?(amlee)
(In reply to Jared Wein [:jaws] (please needinfo? me) from comment #2)
> Amy, what are your thoughts? At the same time that it may be distracting,
> for other uses it may be helpful to know that the page content has just been
> updated.
I don't mind it, as you said it lets the user know that content has finished loading, but if it's a situation where the site reloads automatically as in the example URL (http://www.osaka-pref-rivercam.info/toubu/04.html) I can see why it can be distracting. I'm not sure how common these sites are that would have an automatic reload and if we should consider these edge cases? Asking Eric for input since he worked on the tab animations.
Flags: needinfo?(amlee) → needinfo?(epang)
(In reply to Jared Wein [:jaws] (please needinfo? me) from comment #2)
> Amy, what are your thoughts? At the same time that it may be distracting,
> for other uses it may be helpful to know that the page content has just been
> updated.

In the background tab, 
It is meaningless to animate the burst every time updating.
I think that browser should display the unread state(like pinned tab) instead of the tab burst.
As designed the intention is to let the user know when their content has loaded and is ready to be viewed.  Saying that, I wouldn't be against making the background tab burst more subtle.  Jared, would it be possible to have a different opacity for selected and background tabs? Thinking we can lower the opacity of the burst for background tabs so they are not as bright.  Let me know what you think and if it's possible.
Flags: needinfo?(epang) → needinfo?(jaws)
Short answer, yes it's possible.

Long answer, I don't know if we should differentiate. Purely because people may switch tabs while a page is loading and then wait for it to finish loading before switching back. 

I think the better fix here would be maybe to use a lower opacity for tabs that were not focused when the load began. With the exception of links that are opened in a new tab.
Flags: needinfo?(jaws)
Component: General → Tabbed Browser
Flags: qe-verify?
Priority: -- → P4
Whiteboard: [photon-animation] [triage] → [reserve-photon-animation]
Assignee: nobody → jaws
Status: NEW → ASSIGNED
Priority: P4 → P1
Amy, can you test out this build and let me know what you think? I have dropped the starting opacity of the burst in unselected tabs to .2 (from .4). We could also just not run the animation in this case.

https://queue.taskcluster.net/v1/task/JQhCVvyMRn2ERPpy8MAqLw/runs/0/artifacts/public/build/target.dmg
Flags: needinfo?(amlee)
Per comment 8
Flags: needinfo?(epang)
This URL will reproduce this bug easily:
data:text/html,<script>setTimeout(function() { location.reload(true); }, 1000)</script>
(In reply to Jared Wein [:jaws] (please needinfo? me) from comment #8)
> Amy, can you test out this build and let me know what you think? I have
> dropped the starting opacity of the burst in unselected tabs to .2 (from
> .4). We could also just not run the animation in this case.
> 
> https://queue.taskcluster.net/v1/task/JQhCVvyMRn2ERPpy8MAqLw/runs/0/
> artifacts/public/build/target.dmg

The burst looks good at 20%
For the ball it looks like it changes from grey to white.  Can we keep it at the first state (Grey) to match the text and ‘x’?
Anything that loads in the background doesn’t need the 2 stages.  The grey keeps things more muted. Thanks!
Flags: needinfo?(epang)
Flags: needinfo?(amlee)
Comment on attachment 8912832 [details]
Bug 1399111 - Tabs that start loading in the background and haven't been selected before completing loading will show a lighter tab burst.

https://reviewboard.mozilla.org/r/184164/#review189700

r=me with the change below.

If we also change the fill colour of the loading indicator for background tabs, can you do that in a separate followup cset? Thanks!

::: browser/themes/shared/tabs.inc.css:110
(Diff revision 1)
>    animation: tab-burst-animation 375ms cubic-bezier(0,0,.58,1);
>    -moz-context-properties: fill;
>    fill: var(--tab-loading-fill);
>  }
>  
> +:root[sessionrestored] .tab-loading-burst[bursting][selectedSinceLoad=false]::before {

It's a little counterintuitive to use an attribute with a negative value to detect this case, when we often remove attributes rather than setting them to 'false' (and check only for the presence of the attribute in CSS)

Maybe you could use the attribute name "unusedSinceLoad" and set it to true in the cases where we currently set `selectedSinceLoad` to false?
Attachment #8912832 - Flags: review?(gijskruitbosch+bugs) → review+
Comment on attachment 8912832 [details]
Bug 1399111 - Tabs that start loading in the background and haven't been selected before completing loading will show a lighter tab burst.

https://reviewboard.mozilla.org/r/184164/#review189700

> It's a little counterintuitive to use an attribute with a negative value to detect this case, when we often remove attributes rather than setting them to 'false' (and check only for the presence of the attribute in CSS)
> 
> Maybe you could use the attribute name "unusedSinceLoad" and set it to true in the cases where we currently set `selectedSinceLoad` to false?

Yeah, I'll do that. I fought back and forth between these names because I think "unusedSinceLoad" is better for the points you raised, and I used "selectedSinceLoad" because it is generally better practice to have variables that use positive verbiage (!ununsedSinceLoad may sound awkward when reading it).
Comment on attachment 8913354 [details]
Bug 1399111 - Keep the loading indicator gray for tabs that have been unselected since load.

https://reviewboard.mozilla.org/r/184708/#review189954

::: browser/themes/shared/tabs.inc.css:184
(Diff revision 1)
>  
>  @keyframes tab-throbber-animation-rtl {
>    100% { transform: translateX(100%); }
>  }
>  
> -:root[sessionrestored] .tab-throbber[progress]::before {
> +:root[sessionrestored] .tab-throbber[progress][unusedSinceLoad]::before {

I must be missing something, because this doesn't look right to me. Here's how I'm reading this, please let me know where I'm wrong:

1) we want to use the grey colour throughout for tabs that are loading in the background and have not been used/selected since the load started.
2) the grey colour comes from fill: currentColor in the: `:root[sessionrestored] .tab-throbber[busy]::before` rule a few lines up
3) it is thus applied to `[busy]` tabs
4) for `[progress]` tabs we use white/blue depending on the background colour
5) the white/blue comes from `fill: var(--tab-loading-fill)` in this rule, which is overriding the earlier one.
6) we now want to use grey for those tabs, too, iff they are unused.

logically, I think that means this rule should get `:not([unusedSinceLoad])`, so that we only override the fill for used/selected (not unused) tabs. Right? But this is doing the opposite, so I'm confused.
Comment on attachment 8913354 [details]
Bug 1399111 - Keep the loading indicator gray for tabs that have been unselected since load.

https://reviewboard.mozilla.org/r/184708/#review189984
Attachment #8913354 - Flags: review?(gijskruitbosch+bugs) → review+
Pushed by jwein@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/fcced3138ab7
Tabs that start loading in the background and haven't been selected before completing loading will show a lighter tab burst. r=Gijs
https://hg.mozilla.org/integration/autoland/rev/3e7cd55f6cb9
Keep the loading indicator gray for tabs that have been unselected since load. r=Gijs
Comment on attachment 8912832 [details]
Bug 1399111 - Tabs that start loading in the background and haven't been selected before completing loading will show a lighter tab burst.

Approval Request Comment
[Feature/Bug causing the regression]: bug 1392157
[User impact if declined]: tabs loading in the background may be too distracting
[Is this code covered by automated tests?]: no
[Has the fix been verified in Nightly?]: no, just landed on autoland
[Needs manual test from QE? If yes, steps to reproduce]: no
[List of other uplifts needed for the feature/fix]: none
[Is the change risky?]: no
[Why is the change risky/not risky?]: just changes the CSS to use a lighter tab burst in background tabs
[String changes made/needed]: none
Attachment #8912832 - Flags: approval-mozilla-beta?
Comment on attachment 8913354 [details]
Bug 1399111 - Keep the loading indicator gray for tabs that have been unselected since load.

Approval Request Comment -> see comment #21
Attachment #8913354 - Flags: approval-mozilla-beta?
https://hg.mozilla.org/mozilla-central/rev/fcced3138ab7
https://hg.mozilla.org/mozilla-central/rev/3e7cd55f6cb9
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 58
Comment on attachment 8912832 [details]
Bug 1399111 - Tabs that start loading in the background and haven't been selected before completing loading will show a lighter tab burst.

Photon polish, should be in 57b5
Attachment #8912832 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Attachment #8913354 - Flags: approval-mozilla-beta?
Depends on: 1404495
[bugday-20180110]
I tried to reproduce this it is not reproducible on Firefox 58.0b14 (64-bit)(Build Id: 20180103230655).
Tested in Linux debain 4.10.0-38-generic #42~16.04.1-Ubuntu x86_64
Taking this off the verification radar.
Status: RESOLVED → VERIFIED
Depends on: 1472989
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: