LightweightThemeConsumer.jsm:_sanitizeCSSColor slows down first-time about:welcome theme enables
Categories
(Firefox :: Toolbars and Customization, defect, P1)
Tracking
()
People
(Reporter: dmosedale, Assigned: emilio)
References
Details
Attachments
(1 file)
|
47 bytes,
text/x-phabricator-request
|
RyanVM
:
approval-mozilla-beta+
|
Details | Review |
https://searchfox.org/mozilla-central/source/toolkit/modules/LightweightThemeConsumer.jsm#458 has shown up to be a good candidate for speeding up to support making the theme switches in about:welcome meaningfully faster.
Emilio and I chatted about this for a while in Slack, and he has a plan for what looks to be a straightforward fix that should be upliftable to 81 beta.
| Reporter | ||
Updated•5 years ago
|
| Reporter | ||
Updated•5 years ago
|
| Assignee | ||
Comment 1•5 years ago
|
||
Instead of creating an element, flushing styles and getting the computed
value back just to receive, use the existing InspectorUtils.colorToRGBA.
With some refactoring, we can completely get rid of parsing rgba strings
in LightWeightThemeConsumer too, as a benefit. This should be much
faster.
This patch tweaks the InspectorUtils API to allow taking a document, so
that system colors keep working. We could probably get away without
supporting system colors, but it'd technically be a regression, and
since we want this patch to be uplifted, and it's easy, let's avoid
breaking changes.
| Assignee | ||
Updated•5 years ago
|
| Reporter | ||
Comment 2•5 years ago
|
||
Just tested the first iteration of this patch -- it was a very large win, cutting the amount of time to initially enable the existing themes almost in half. Thanks so much, Emilio!
| Reporter | ||
Updated•5 years ago
|
| Reporter | ||
Comment 3•5 years ago
|
||
[Tracking Requested - why for this release]:
As part of the about:welcome onboarding experiments, first-time users are being offered to choose themes. On older and slower machines today, enabling a theme for the first time is visibly very slow for the existing themes. Furthermore, for 81, we've added Alpenglow, a which is visibly slower to enable than the existing two. The hope is that this patch should almost double the speed of theme selection at low risk.
Comment 5•5 years ago
|
||
Backed out changeset 8fe9ffffccda (bug 1661123) for browser_ext_themes_experiment.js failures.
Backout link: https://hg.mozilla.org/integration/autoland/rev/3081e15cb9743821d0e64ecb08836c5cf0a47afb
Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=314167172&repo=autoland&lineNumber=6937
[task 2020-08-27T11:37:11.977Z] 11:37:11 INFO - TEST-START | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js
[task 2020-08-27T11:37:12.017Z] 11:37:12 INFO - TEST-INFO | started process screenshot
[task 2020-08-27T11:37:12.115Z] 11:37:12 INFO - TEST-INFO | screenshot: exit 0
[task 2020-08-27T11:37:12.115Z] 11:37:12 INFO - Buffered messages logged at 11:37:11
[task 2020-08-27T11:37:12.115Z] 11:37:12 INFO - Entering test bound test_experiment_static_theme
[task 2020-08-27T11:37:12.116Z] 11:37:12 INFO - Extension loaded
[task 2020-08-27T11:37:12.116Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Color property should be unset -
[task 2020-08-27T11:37:12.116Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be unset -
[task 2020-08-27T11:37:12.116Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Generic Property should be unset. -
[task 2020-08-27T11:37:12.116Z] 11:37:12 INFO - Buffered messages logged at 11:37:12
[task 2020-08-27T11:37:12.116Z] 11:37:12 INFO - Testing that current window updated with the experiment applied
[task 2020-08-27T11:37:12.116Z] 11:37:12 INFO - Buffered messages finished
[task 2020-08-27T11:37:12.116Z] 11:37:12 INFO - TEST-UNEXPECTED-FAIL | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Color property should be parsed and set. - Got "rgba(255, 0, 255, 1)", expected "rgb(255, 0, 255)"
[task 2020-08-27T11:37:12.116Z] 11:37:12 INFO - Stack trace:
[task 2020-08-27T11:37:12.117Z] 11:37:12 INFO - chrome://mochikit/content/browser-test.js:test_is:1332
[task 2020-08-27T11:37:12.117Z] 11:37:12 INFO - chrome://mochitests/content/browser/toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js:testExperimentApplied:58
[task 2020-08-27T11:37:12.117Z] 11:37:12 INFO - chrome://mochitests/content/browser/toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js:test_experiment_static_theme:100
[task 2020-08-27T11:37:12.117Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be parsed. -
[task 2020-08-27T11:37:12.117Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be set. -
[task 2020-08-27T11:37:12.117Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Generic Property should be set. -
[task 2020-08-27T11:37:12.117Z] 11:37:12 INFO - Testing that new window initialized with the experiment applied
[task 2020-08-27T11:37:12.358Z] 11:37:12 INFO - Not taking screenshot here: see the one that was previously logged
[task 2020-08-27T11:37:12.358Z] 11:37:12 INFO - TEST-UNEXPECTED-FAIL | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Color property should be parsed and set. - Got "rgba(255, 0, 255, 1)", expected "rgb(255, 0, 255)"
[task 2020-08-27T11:37:12.358Z] 11:37:12 INFO - Stack trace:
[task 2020-08-27T11:37:12.358Z] 11:37:12 INFO - chrome://mochikit/content/browser-test.js:test_is:1332
[task 2020-08-27T11:37:12.358Z] 11:37:12 INFO - chrome://mochitests/content/browser/toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js:testExperimentApplied:58
[task 2020-08-27T11:37:12.358Z] 11:37:12 INFO - chrome://mochitests/content/browser/toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js:test_experiment_static_theme:105
[task 2020-08-27T11:37:12.358Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be parsed. -
[task 2020-08-27T11:37:12.359Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be set. -
[task 2020-08-27T11:37:12.359Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Generic Property should be set. -
[task 2020-08-27T11:37:12.379Z] 11:37:12 INFO - Testing that both windows unapplied the experiment
[task 2020-08-27T11:37:12.380Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Color property should be unset -
[task 2020-08-27T11:37:12.380Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be unset -
[task 2020-08-27T11:37:12.380Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Generic Property should be unset. -
[task 2020-08-27T11:37:12.380Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Color property should be unset -
[task 2020-08-27T11:37:12.381Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be unset -
[task 2020-08-27T11:37:12.381Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Generic Property should be unset. -
[task 2020-08-27T11:37:12.442Z] 11:37:12 INFO - Leaving test bound test_experiment_static_theme
[task 2020-08-27T11:37:12.442Z] 11:37:12 INFO - Entering test bound test_experiment_dynamic_theme
[task 2020-08-27T11:37:12.442Z] 11:37:12 INFO - Extension loaded
[task 2020-08-27T11:37:12.482Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Color property should be unset -
[task 2020-08-27T11:37:12.482Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be unset -
[task 2020-08-27T11:37:12.482Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Generic Property should be unset. -
[task 2020-08-27T11:37:12.501Z] 11:37:12 INFO - Not taking screenshot here: see the one that was previously logged
[task 2020-08-27T11:37:12.501Z] 11:37:12 INFO - TEST-UNEXPECTED-FAIL | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Color property should be parsed and set. - Got "rgba(255, 0, 255, 1)", expected "rgb(255, 0, 255)"
[task 2020-08-27T11:37:12.501Z] 11:37:12 INFO - Stack trace:
[task 2020-08-27T11:37:12.501Z] 11:37:12 INFO - chrome://mochikit/content/browser-test.js:test_is:1332
[task 2020-08-27T11:37:12.501Z] 11:37:12 INFO - chrome://mochitests/content/browser/toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js:testExperimentApplied:197
[task 2020-08-27T11:37:12.501Z] 11:37:12 INFO - chrome://mochitests/content/browser/toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js:test_experiment_dynamic_theme:237
[task 2020-08-27T11:37:12.501Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be parsed. -
[task 2020-08-27T11:37:12.501Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be set. -
[task 2020-08-27T11:37:12.502Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Generic Property should be set. -
[task 2020-08-27T11:37:12.811Z] 11:37:12 INFO - Not taking screenshot here: see the one that was previously logged
[task 2020-08-27T11:37:12.811Z] 11:37:12 INFO - TEST-UNEXPECTED-FAIL | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Color property should be parsed and set. - Got "rgba(255, 0, 255, 1)", expected "rgb(255, 0, 255)"
[task 2020-08-27T11:37:12.811Z] 11:37:12 INFO - Stack trace:
[task 2020-08-27T11:37:12.811Z] 11:37:12 INFO - chrome://mochikit/content/browser-test.js:test_is:1332
[task 2020-08-27T11:37:12.811Z] 11:37:12 INFO - chrome://mochitests/content/browser/toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js:testExperimentApplied:197
[task 2020-08-27T11:37:12.811Z] 11:37:12 INFO - chrome://mochitests/content/browser/toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js:test_experiment_dynamic_theme:242
[task 2020-08-27T11:37:12.812Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be parsed. -
[task 2020-08-27T11:37:12.812Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be set. -
[task 2020-08-27T11:37:12.812Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Generic Property should be set. -
[task 2020-08-27T11:37:12.833Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Color property should be unset -
[task 2020-08-27T11:37:12.833Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be unset -
[task 2020-08-27T11:37:12.833Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Generic Property should be unset. -
[task 2020-08-27T11:37:12.834Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Color property should be unset -
[task 2020-08-27T11:37:12.834Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be unset -
[task 2020-08-27T11:37:12.834Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Generic Property should be unset. -
[task 2020-08-27T11:37:12.853Z] 11:37:12 INFO - Not taking screenshot here: see the one that was previously logged
[task 2020-08-27T11:37:12.853Z] 11:37:12 INFO - TEST-UNEXPECTED-FAIL | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Color property should be parsed and set. - Got "rgba(255, 0, 255, 1)", expected "rgb(255, 0, 255)"
[task 2020-08-27T11:37:12.853Z] 11:37:12 INFO - Stack trace:
[task 2020-08-27T11:37:12.853Z] 11:37:12 INFO - chrome://mochikit/content/browser-test.js:test_is:1332
[task 2020-08-27T11:37:12.853Z] 11:37:12 INFO - chrome://mochitests/content/browser/toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js:testExperimentApplied:197
[task 2020-08-27T11:37:12.853Z] 11:37:12 INFO - chrome://mochitests/content/browser/toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js:test_experiment_dynamic_theme:268
[task 2020-08-27T11:37:12.854Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be parsed. -
[task 2020-08-27T11:37:12.854Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be set. -
[task 2020-08-27T11:37:12.854Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Generic Property should be set. -
[task 2020-08-27T11:37:12.854Z] 11:37:12 INFO - Not taking screenshot here: see the one that was previously logged
[task 2020-08-27T11:37:12.854Z] 11:37:12 INFO - TEST-UNEXPECTED-FAIL | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Color property should be parsed and set. - Got "rgba(255, 0, 255, 1)", expected "rgb(255, 0, 255)"
[task 2020-08-27T11:37:12.854Z] 11:37:12 INFO - Stack trace:
[task 2020-08-27T11:37:12.854Z] 11:37:12 INFO - chrome://mochikit/content/browser-test.js:test_is:1332
[task 2020-08-27T11:37:12.854Z] 11:37:12 INFO - chrome://mochitests/content/browser/toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js:testExperimentApplied:197
[task 2020-08-27T11:37:12.854Z] 11:37:12 INFO - chrome://mochitests/content/browser/toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js:test_experiment_dynamic_theme:269
[task 2020-08-27T11:37:12.854Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be parsed. -
[task 2020-08-27T11:37:12.854Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be set. -
[task 2020-08-27T11:37:12.854Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Generic Property should be set. -
[task 2020-08-27T11:37:12.894Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Color property should be unset -
[task 2020-08-27T11:37:12.894Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be unset -
[task 2020-08-27T11:37:12.894Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Generic Property should be unset. -
[task 2020-08-27T11:37:12.894Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Color property should be unset -
[task 2020-08-27T11:37:12.894Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Image property should be unset -
[task 2020-08-27T11:37:12.894Z] 11:37:12 INFO - TEST-PASS | toolkit/components/extensions/test/browser/browser_ext_themes_experiment.js | Generic Property should be unset. -
[task 2020-08-27T11:37:12.975Z] 11:37:12 INFO - Leaving test bound test_experiment_dynamic_theme
...
| Assignee | ||
Updated•5 years ago
|
Updated•5 years ago
|
Comment 7•5 years ago
|
||
| bugherder | ||
Updated•5 years ago
|
Comment 8•5 years ago
|
||
The patch landed in nightly and beta is affected.
:emilio, is this bug important enough to require an uplift?
If not please set status_beta to wontfix.
For more information, please visit auto_nag documentation.
| Assignee | ||
Comment 9•5 years ago
|
||
Comment on attachment 9172018 [details]
Bug 1661123 - Make LightWeightThemeConsumer.jsm sanitize colors faster. r=dmose
Beta/Release Uplift Approval Request
- User impact if declined: see comment 3
- Is this code covered by automated tests?: Yes
- Has the fix been verified in Nightly?: Yes
- Needs manual test from QE?: No
- If yes, steps to reproduce:
- List of other uplifts needed: none
- Risk to taking this patch: Low
- Why is the change risky/not risky? (and alternatives if risky): Simple change to the color sanitization used by the theming code to be faster.
- String changes made/needed: none
Comment 10•5 years ago
|
||
Comment on attachment 9172018 [details]
Bug 1661123 - Make LightWeightThemeConsumer.jsm sanitize colors faster. r=dmose
Sounds like a pretty big improvement to a high-visibility change shipping in 81. Approved for 81.0b5.
Comment 11•5 years ago
|
||
| bugherder uplift | ||
Description
•