profile-viewer 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/dist/136.4ad3301b8aacf759ea70.bundle.js +2 -0
  3. data/dist/136.4ad3301b8aacf759ea70.bundle.js.map +1 -0
  4. data/dist/171.621b9df5978342be5662.bundle.js +2 -0
  5. data/dist/171.621b9df5978342be5662.bundle.js.map +1 -0
  6. data/dist/18a5d1d99f1c65c33b71.png +0 -0
  7. data/dist/1ddbc3ce40af8c7a648b.svg +6 -0
  8. data/dist/280.b4210a48e650408000c3.bundle.js +2 -0
  9. data/dist/280.b4210a48e650408000c3.bundle.js.map +1 -0
  10. data/dist/556.2be67a37a0c61fdc2485.bundle.js +2 -0
  11. data/dist/{914.b9bc213d93173ce6b0cb.bundle.js.map → 556.2be67a37a0c61fdc2485.bundle.js.map} +1 -1
  12. data/dist/874.2a087b9b5a296a9c3fcd.bundle.js +2 -0
  13. data/dist/874.2a087b9b5a296a9c3fcd.bundle.js.map +1 -0
  14. data/dist/_headers +1 -2
  15. data/dist/contribute.json +31 -35
  16. data/dist/d6df0017c0241dfe86ff.svg +6 -0
  17. data/dist/docs/_sidebar.md +1 -0
  18. data/dist/docs/advanced-topics.md +1 -0
  19. data/dist/docs/async-posix-signal-control.md +102 -0
  20. data/dist/docs/guide-startup-shutdown.md +7 -7
  21. data/dist/docs/js/init.js +1 -1
  22. data/dist/index.html +1 -1
  23. data/dist/locales/README.md +1 -0
  24. data/dist/locales/be/app.ftl +42 -6
  25. data/dist/locales/de/app.ftl +109 -3
  26. data/dist/locales/el/app.ftl +110 -4
  27. data/dist/locales/en-CA/app.ftl +1125 -0
  28. data/dist/locales/en-GB/app.ftl +110 -4
  29. data/dist/locales/en-US/app.ftl +123 -6
  30. data/dist/locales/es-CL/app.ftl +110 -4
  31. data/dist/locales/fr/app.ftl +66 -4
  32. data/dist/locales/fur/app.ftl +1093 -0
  33. data/dist/locales/fy-NL/app.ftl +109 -3
  34. data/dist/locales/ia/app.ftl +109 -3
  35. data/dist/locales/it/app.ftl +109 -3
  36. data/dist/locales/kab/app.ftl +32 -2
  37. data/dist/locales/nl/app.ftl +110 -4
  38. data/dist/locales/pt-BR/app.ftl +111 -5
  39. data/dist/locales/ru/app.ftl +109 -3
  40. data/dist/locales/sv-SE/app.ftl +109 -3
  41. data/dist/locales/tr/app.ftl +907 -0
  42. data/dist/locales/uk/app.ftl +110 -4
  43. data/dist/locales/zh-CN/app.ftl +112 -6
  44. data/dist/locales/zh-TW/app.ftl +109 -3
  45. data/dist/main.ac7130d34ce3b872712a.bundle.js +201 -0
  46. data/dist/{main.8208fda2d35ddbe38d55.bundle.js.LICENSE.txt → main.ac7130d34ce3b872712a.bundle.js.LICENSE.txt} +1 -30
  47. data/dist/main.ac7130d34ce3b872712a.bundle.js.map +1 -0
  48. data/dist/photon/index.html +3 -2
  49. data/dist/photon/main.aafbcdad3fb08c7ae5b4.bundle.js +2 -0
  50. data/dist/photon/main.aafbcdad3fb08c7ae5b4.bundle.js.map +1 -0
  51. data/dist/robots.txt +4 -0
  52. data/dist/sw.js +1 -1
  53. data/dist/sw.js.map +1 -1
  54. data/dist/{workbox-27b29e6f.js → workbox-e3490c72.js} +2 -2
  55. data/dist/{workbox-27b29e6f.js.map → workbox-e3490c72.js.map} +1 -1
  56. data/dist/zee-worker.js +1 -1
  57. data/ruby-bin/profile-viewer +53 -16
  58. data/ruby-bin/profile-viewer-version.rb +3 -0
  59. metadata +60 -25
  60. data/dist/119.cc58ce313e67f80f50f3.bundle.js +0 -2
  61. data/dist/119.cc58ce313e67f80f50f3.bundle.js.map +0 -1
  62. data/dist/131.c21d348572deab4ece66.bundle.js +0 -2
  63. data/dist/131.c21d348572deab4ece66.bundle.js.map +0 -1
  64. data/dist/308.4d236ce7e6451807cb54.bundle.js +0 -2
  65. data/dist/308.4d236ce7e6451807cb54.bundle.js.map +0 -1
  66. data/dist/9.071a712ea648c8b30416.bundle.js +0 -2
  67. data/dist/9.071a712ea648c8b30416.bundle.js.map +0 -1
  68. data/dist/914.b9bc213d93173ce6b0cb.bundle.js +0 -2
  69. data/dist/b45b29da558efa211628.jpg +0 -0
  70. data/dist/before-load.js +0 -1
  71. data/dist/main.8208fda2d35ddbe38d55.bundle.js +0 -199
  72. data/dist/main.8208fda2d35ddbe38d55.bundle.js.map +0 -1
  73. data/dist/photon/main.8c8260452e7439ec6df9.bundle.js +0 -2
  74. data/dist/photon/main.8c8260452e7439ec6df9.bundle.js.map +0 -1
  75. /data/dist/{ad13da76642d8099fe70.module.wasm → 2f37d1addc2d2f5b699e.module.wasm} +0 -0
data/dist/_headers CHANGED
@@ -15,7 +15,6 @@
15
15
 
16
16
  # 1. script-src
17
17
  # a. 'wasm-unsafe-eval' allows to execute wasm scripts without compromising the javascript CSP.
18
- # b. We use Google Analytics to track the usage of the application.
19
18
  # 2. style-src
20
19
  # a. `unsafe-inline` is necessary to support favicons.
21
20
  # b. Google Fonts are used in the docs.
@@ -26,7 +25,7 @@
26
25
  # 7. `frame-ancestors` is the same purpose as `X-Frame-Options` above.
27
26
  # 8. `form-action`prevents forms, we don't need this.`
28
27
  # 9. `frame-src` allows the embedding of YouTube videos in the docs.
29
- Content-Security-Policy: default-src 'self'; script-src 'self' 'wasm-unsafe-eval' https://www.google-analytics.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src http: https: data:; object-src 'none'; connect-src *; frame-ancestors 'self'; form-action 'none'; frame-src www.youtube-nocookie.com
28
+ Content-Security-Policy: default-src 'self'; script-src 'self' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src http: https: data:; object-src 'none'; connect-src *; frame-ancestors 'self'; form-action 'none'; frame-src www.youtube-nocookie.com
30
29
 
31
30
  # Set the correct MIME type for WebAssembly modules.
32
31
  /*.wasm
data/dist/contribute.json CHANGED
@@ -1,37 +1,33 @@
1
1
  {
2
- "name": "Firefox profiler",
3
- "description": "Web app for Firefox performance analysis",
4
- "repository": {
5
- "url": "https://github.com/firefox-devtools/profiler",
6
- "license": "MPL2",
7
- "tests": "https://circleci.com/gh/firefox-devtools/profiler"
8
- },
9
- "participate": {
10
- "home": "https://github.com/firefox-devtools/profiler/blob/main/CONTRIBUTING.md",
11
- "docs": "https://github.com/firefox-devtools/profiler/tree/main/docs-developer",
12
- "matrix": "https://chat.mozilla.org/#/room/#profiler:mozilla.org",
13
- "chat": {
14
- "url": "https://chat.mozilla.org/#/room/#profiler:mozilla.org",
15
- "contacts": [
16
- "@julienw:mozilla.org",
17
- "@canova:mozilla.org",
18
- "@mstange:mozilla.org",
19
- "@davehunt:mozilla.org"
20
- ]
21
- }
22
- },
23
- "bugs": {
24
- "list": "https://github.com/firefox-devtools/profiler/issues",
25
- "report": "https://github.com/firefox-devtools/profiler/issues/new",
26
- "mentored": "https://github.com/firefox-devtools/profiler/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22"
27
- },
28
- "urls": {
29
- "prod": "https://profiler.firefox.com",
30
- "stage": "https://main--perf-html.netlify.app/"
31
- },
32
- "keywords": [
33
- "performance",
34
- "firefox",
35
- "web"
2
+ "name": "Firefox profiler",
3
+ "description": "Web app for Firefox performance analysis",
4
+ "repository": {
5
+ "url": "https://github.com/firefox-devtools/profiler",
6
+ "license": "MPL2",
7
+ "tests": "https://circleci.com/gh/firefox-devtools/profiler"
8
+ },
9
+ "participate": {
10
+ "home": "https://github.com/firefox-devtools/profiler/blob/main/CONTRIBUTING.md",
11
+ "docs": "https://github.com/firefox-devtools/profiler/tree/main/docs-developer",
12
+ "matrix": "https://chat.mozilla.org/#/room/#profiler:mozilla.org",
13
+ "chat": {
14
+ "url": "https://chat.mozilla.org/#/room/#profiler:mozilla.org",
15
+ "contacts": [
16
+ "@julienw:mozilla.org",
17
+ "@canova:mozilla.org",
18
+ "@mstange:mozilla.org",
19
+ "@davehunt:mozilla.org"
36
20
  ]
37
- }
21
+ }
22
+ },
23
+ "bugs": {
24
+ "list": "https://github.com/firefox-devtools/profiler/issues",
25
+ "report": "https://github.com/firefox-devtools/profiler/issues/new",
26
+ "mentored": "https://github.com/firefox-devtools/profiler/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22"
27
+ },
28
+ "urls": {
29
+ "prod": "https://profiler.firefox.com",
30
+ "stage": "https://main--perf-html.netlify.app/"
31
+ },
32
+ "keywords": ["performance", "firefox", "web"]
33
+ }
@@ -0,0 +1,6 @@
1
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
2
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
4
+ <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg">
5
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zM9.731 4.066a8.257 8.257 0 0 0-5.938 7.09h3.266a13.027 13.027 0 0 1 2.672-7.09zm-2.672 8.84h-3.26a8.258 8.258 0 0 0 5.873 7.01 13.025 13.025 0 0 1-2.613-7.01zm4.911 7.01a11.295 11.295 0 0 1-3.157-7.01h6.369a11.296 11.296 0 0 1-3.212 7.01zm-3.157-8.76a11.298 11.298 0 0 1 3.217-7.072 11.299 11.299 0 0 1 3.161 7.072H8.813zm8.132 0a13.027 13.027 0 0 0-2.616-7.073 8.257 8.257 0 0 1 5.878 7.073h-3.262zm-.008 1.75a13.026 13.026 0 0 1-2.669 7.028 8.257 8.257 0 0 0 5.933-7.028h-3.264z" fill="#000" />
6
+ </svg>
@@ -15,6 +15,7 @@
15
15
  * [Perf profiling on Linux](./guide-perf-profiling.md)
16
16
  * [Perf profiling on Android](./guide-android-profiling.md)
17
17
  * [IPC Messages](./ipc-messages.md)
18
+ * [Profiler control using POSIX signals](./async-posix-signal-control.md)
18
19
  * [Video Tutorials](./videos.md)
19
20
  * [Firefox Profiler intro](./videos-intro.md)
20
21
  * [Samples and markers](./videos-samples-markers.md)
@@ -7,3 +7,4 @@ developers of the Firefox browser.
7
7
  * [Perf profiling on Linux](./guide-perf-profiling.md)
8
8
  * [Perf profiling on Android](./guide-android-profiling.md)
9
9
  * [IPC Messages](./ipc-messages.md)
10
+ * [Profiler control using POSIX signals](./async-posix-signal-control.md)
@@ -0,0 +1,102 @@
1
+
2
+ # Profiler control using POSIX signals
3
+
4
+ The Firefox profiler supports the use of asynchronous POSIX signals for a
5
+ limited number of operations, specifically starting and stopping the profiler.
6
+ This can be useful in situations where the normal UI or keyboard shortcut
7
+ control of the profiler is not available.
8
+
9
+ In brief, a user can send the POSIX signal `SIGUSR1` to the main Firefox process
10
+ to start the profiler, and the signal `SIGUSR2` to stop the profiler. Upon
11
+ recieiving the "stop" signal, the profiler will collect the current profile data
12
+ and write it to a `.json` file in the user's downloads directory. For example,
13
+ on MacOS:
14
+
15
+ // Send signal USR1 to the first (main) process of Firefox.app to start the profiler
16
+ kill -s USR1 `pgrep -f Firefox.app | head -n 1`
17
+ // wait for firefox to gather some data
18
+ sleep 10
19
+ // Send signal USR2 to the same process to stop the profiler
20
+ kill -s USR2 `pgrep -f Firefox.app | head -n 1`
21
+ // Find the result in the download folder
22
+ ls ~/Downloads/ | grep "profile.*json"
23
+
24
+ From there, the user can open the written profile using the standard profiler
25
+ UI, by navigating to [profiler.firefox.com](https://profiler.firefox.com), and selecting
26
+ "Load a profile from file".
27
+
28
+ Typically, sending a signal to a program is done using the `kill`
29
+ [command](https://man7.org/linux/man-pages/man1/kill.1.html), as seen in the
30
+ above example. It is important to specify the correct signal, as the default is
31
+ `TERM`, which will terminate the program. For the profiler, only signals
32
+ `SIGUSR1` (for starting) and `SIGUSR2` (for stopping) should be used. Note that they
33
+ are written without the `SIG` prefix when used as an argument to `kill` i.e.:
34
+
35
+ kill -s USR1 <firefox pid> // start the profiler
36
+ kill -s USR2 <firefox pid> // stop the profiler
37
+
38
+ // Alternative syntax
39
+ kill -USR1 <firefox pid>
40
+ kill --signal USR1 <firefox pid>
41
+
42
+ !> Only the process ID of the "main" process should be used. Child processes are
43
+ controlled by the parent process via IPC, and are unable to write their
44
+ processes to disk (due to sandboxing restrictions), so are not useful to profile
45
+ using signals.
46
+
47
+ The process ID of a running instance of Firefox can be found in a number of
48
+ ways, for instance:
49
+
50
+ pgrep -f Firefox.app // On MacOS
51
+ pidof Firefox // on Linux
52
+
53
+ In case of confusion, the main process is typically the one with lowest ID, when
54
+ sorted numerically.
55
+
56
+ Signal support is intended as a last-ditch debugging tool for situations where
57
+ we want to be able to diagnose issues with Firefox, but may not be able to use
58
+ the existing UI controls or Keyboard shortcuts to start/stop the profiler. For
59
+ example, if we encounter a prolonged freeze while browsing, it may be useful to
60
+ capture a profile by using POSIX signals to start and stop the profiler.
61
+
62
+ In a "normal" profiling flow, the resulting profile is communicated to the
63
+ profiler front-end directly, and then displayed to the user at the end of a
64
+ profiling session. The signal-controlled profiler bypasses this flow, and
65
+ instead writes a profile to disk. This makes it possible for us to debug in
66
+ situations where we may not be able to access the profiler UI in the same
67
+ session of firefox as the one we are debugging, with the small added friction of
68
+ needing to directly load the profile.
69
+
70
+ ## Limitations
71
+
72
+ The current implementation of POSIX signal support has a number of important
73
+ limitations that potential users need to be aware of:
74
+
75
+ * The profiler currently uses a set of "default"
76
+ [values](https://searchfox.org/mozilla-central/rev/7a8904165618818f73ab7fc692ace4a57ecd38c9/tools/profiler/core/platform.cpp#633)
77
+ when started using signals. There are currently plans to support configuration
78
+ (see [Bug 1866007](https://bugzilla.mozilla.org/show_bug.cgi?id=1866007) for
79
+ further information).
80
+ * Async signal handling is currently only supported and tested on POSIX native
81
+ platforms, i.e. Linux and MacOS. Support for Windows is planned, but not yet
82
+ implemented (see [Bug
83
+ 1867328](https://bugzilla.mozilla.org/show_bug.cgi?id=1867328) for further
84
+ information).
85
+ * The "stop" signal must be sent to Firefox's "main" process. This is due to
86
+ Firefox's sandboxing rules, which disallow non-main processes (in general)
87
+ from opening file handles. Because of this, individual processes cannot dump
88
+ their own data to disk, so cannot individually handle the stop signal.
89
+ * Signal support in the Firefox profiler is incompatible with Firefox's [code
90
+ coverage](https://firefox-source-docs.mozilla.org/tools/code-coverage/index.html)
91
+ tooling, as both rely on the same POSIX signals (`SIGUSR1` and `SIGUSR2`). In
92
+ an ideal world we could use Linux's
93
+ [real-time](https://man7.org/linux/man-pages/man7/signal.7.html) signals
94
+ instead, as they offer a much larger set of user-defined signals that would
95
+ not clash with the signals used by the code coverage tool. Unfortunately,
96
+ MacOS does not support these signals, so we are limited to the smaller set of
97
+ signals in order to support a wider set of platforms.
98
+ * Although signals are used to start/stop the profiler, the aggregation of
99
+ content-process profiles is still done using "traditional" Firefox IPC calls.
100
+ If, therefore, you are using signals to diagnose issues with a "stuck" main
101
+ thread in the main process, Firefox may not be able to aggregate child content
102
+ process profiles.
@@ -40,7 +40,7 @@ If you have compiled GeckoView-example locally, you can launch it with `./mach r
40
40
  ```bash
41
41
  ./mach run --setenv MOZ_PROFILER_STARTUP=1 \
42
42
  --setenv MOZ_PROFILER_STARTUP_INTERVAL=5 \
43
- --setenv MOZ_PROFILER_STARTUP_FEATURES=threads,js,stackwalk,leaf,screenshots,ipcmessages,java \
43
+ --setenv MOZ_PROFILER_STARTUP_FEATURES=js,stackwalk,screenshots,ipcmessages,java,processcpu,cpu \
44
44
  --setenv MOZ_PROFILER_STARTUP_FILTERS="GeckoMain,Compositor,Renderer,IPDL Background"
45
45
  ```
46
46
 
@@ -50,7 +50,7 @@ Alternatively, if you have installed GeckoView-example from another source, you
50
50
  adb shell am start -n org.mozilla.geckoview_example/.App \
51
51
  --es env0 MOZ_PROFILER_STARTUP=1 \
52
52
  --es env1 MOZ_PROFILER_STARTUP_INTERVAL=5 \
53
- --es env2 MOZ_PROFILER_STARTUP_FEATURES=threads,js,stackwalk,leaf,screenshots,ipcmessages,java \
53
+ --es env2 MOZ_PROFILER_STARTUP_FEATURES=js,stackwalk,screenshots,ipcmessages,java,processcpu,cpu \
54
54
  --es env3 MOZ_PROFILER_STARTUP_FILTERS="GeckoMain,Compositor,Renderer,IPDL Background"
55
55
  ```
56
56
 
@@ -58,15 +58,15 @@ adb shell am start -n org.mozilla.geckoview_example/.App \
58
58
 
59
59
  Fenix has a [different way](https://firefox-source-docs.mozilla.org/mobile/android/geckoview/consumer/automation.html#reading-configuration-from-a-file) to specify environment variables: it uses a yaml file.
60
60
 
61
- The easiest way to set up startup profiling is to run the `<fenix-repo>/tools/setup-startup-profiling.py` script. For example:
61
+ The easiest way to set up startup profiling is to run the `<mozilla-central-repo>/mobile/android/fenix/tools/setup-startup-profiling.py` script. For example:
62
62
  ```bash
63
- ./tools/setup-startup-profiling.py activate nightly # To activate startup profiling on nightly.
64
- ./tools/setup-startup-profiling.py deactivate beta # To deactivate startup profiling on beta.
63
+ ./mobile/android/fenix/tools/setup-startup-profiling.py activate nightly # To activate startup profiling on nightly.
64
+ ./mobile/android/fenix/tools/setup-startup-profiling.py deactivate beta # To deactivate startup profiling on beta.
65
65
  ```
66
66
 
67
67
  If the app is uninstalled or the device is restarted, the `activate` command may need to be re-run. The script is hard-coded to use a default configuration file with default profiling arguments. If you wish to change these arguments or use a non-standard app ID, modify the script locally or read below.
68
68
 
69
- If you don't want to check out [the fenix repository](https://github.com/mozilla-mobile/fenix/), you should be able to download [the script standalone](https://raw.githubusercontent.com/mozilla-mobile/fenix/master/tools/setup-startup-profiling.py) and execute it.
69
+ If you don't want to check out [mozilla-central](https://hg.mozilla.org/mozilla-central/), you should be able to download [the script standalone](https://hg.mozilla.org/mozilla-central/raw-file/tip/mobile/android/fenix/tools/setup-startup-profiling.py) and execute it.
70
70
 
71
71
  #### Manual configuration
72
72
 
@@ -78,7 +78,7 @@ The filename of the YAML file mentioned above depends on the bundle ID of your F
78
78
  env:
79
79
  MOZ_PROFILER_STARTUP: 1
80
80
  MOZ_PROFILER_STARTUP_INTERVAL: 5
81
- MOZ_PROFILER_STARTUP_FEATURES: threads,js,stackwalk,leaf,screenshots,ipcmessages,java
81
+ MOZ_PROFILER_STARTUP_FEATURES: js,stackwalk,screenshots,ipcmessages,java,processcpu,cpu
82
82
  MOZ_PROFILER_STARTUP_FILTERS: GeckoMain,Compositor,Renderer,IPDL Background
83
83
  ```
84
84
  2. Push this file to the device with `adb push org.mozilla.fenix-geckoview-config.yaml /data/local/tmp/`.
data/dist/docs/js/init.js CHANGED
@@ -1 +1 @@
1
- window.$docsify={name:"Firefox Profiler",auto2top:!0,loadSidebar:!0,loadNavbar:!0,subMaxLevel:2,ga:"UA-35433268-81",themeColor:"#0a84ff",noCompileLinks:[".*\\.svg"]};
1
+ window.$docsify={name:"Firefox Profiler",auto2top:!0,loadSidebar:!0,loadNavbar:!0,subMaxLevel:2,themeColor:"#0a84ff",noCompileLinks:[".*\\.svg",".*\\.png"]};
data/dist/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="initial-scale=1"/><title>Firefox Profiler</title><script src="/before-load.js"></script><link rel="icon" href="/favicon.png"><script defer="defer" src="/main.8208fda2d35ddbe38d55.bundle.js"></script></head><body style="background-color: #363959; /* ink-70 */"><div id="root"></div><div id="root-overlay"></div></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="initial-scale=1"/><title>Firefox Profiler</title><link rel="preload" href="locales/en-US/app.ftl" as="fetch"/><link rel="icon" href="/sidekiq/profile-viewer/favicon.png"><script defer="defer" src="/sidekiq/profile-viewer/main.ac7130d34ce3b872712a.bundle.js"></script></head><body style="background-color: #363959; /* ink-70 */"><div id="root"></div><div id="root-overlay"></div></body></html>
@@ -6,6 +6,7 @@ Please change only the locale content in the `en-US`
6
6
  directory. The other directories are changed using [Pontoon](https://pontoon.mozilla.org/projects/firefox-profiler/).
7
7
 
8
8
  Here are the most important rules:
9
+
9
10
  1. If you change the string in a way that changes the meaning, you need to
10
11
  change the string key as well. If that doesn't change the meaning (for
11
12
  example, if that's a typo fix), then the string key can stay the same. You
@@ -232,7 +232,7 @@ FullTimeline--tracks-button = Дарожак: <span>{ $visibleTrackCount }</span
232
232
  ## Home page
233
233
 
234
234
  Home--upload-from-file-input-button = Загрузіць профіль з файла
235
- Home--upload-from-url-button = Загрузіце профіль з URL
235
+ Home--upload-from-url-button = Загрузіць профіль з URL
236
236
  Home--load-from-url-submit-button =
237
237
  .value = Загрузіць
238
238
  Home--documentation-button = Дакументацыя
@@ -322,7 +322,7 @@ ListOfPublishedProfiles--uploaded-profile-information-list =
322
322
  ## This is used as a context menu for the Marker Chart, Marker Table and Network
323
323
  ## panels.
324
324
 
325
- MarkerContextMenu--set-selection-from-duration = Наладзьце выбарку на аснове працягласці маркера
325
+ MarkerContextMenu--set-selection-from-duration = Наладзіць выбарку на аснове працягласці маркера
326
326
  MarkerContextMenu--start-selection-here = Пачаць вылучэнне тут
327
327
  MarkerContextMenu--end-selection-here = Скончыць вылучэнне тут
328
328
  MarkerContextMenu--start-selection-at-marker-start = Пачаць вылучэнне ад <strong>пачатку</strong> маркера
@@ -345,25 +345,36 @@ MarkerContextMenu--select-the-receiver-thread = Выберыце паток-ат
345
345
  # $threadName (String) - Name of the thread that will be selected.
346
346
  MarkerContextMenu--select-the-sender-thread = Выберыце паток-адпраўнік “<strong>{ $threadName }</strong>”
347
347
 
348
+ ## MarkerFiltersContextMenu
349
+ ## This is the menu when filter icon is clicked in Marker Chart and Marker Table
350
+ ## panels.
351
+
352
+ # This string is used on the marker filters menu item when clicked on the filter icon.
353
+ # Variables:
354
+ # $filter (String) - Search string that will be used to filter the markers.
355
+ MarkerFiltersContextMenu--drop-samples-outside-of-markers-matching = Адкідваць сэмплы па-за межамі маркераў, якія адпавядаюць «<strong>{ $filter }</strong>»
356
+
348
357
  ## MarkerSettings
349
358
  ## This is used in all panels related to markers.
350
359
 
351
360
  MarkerSettings--panel-search =
352
361
  .label = Фільтр маркераў:
353
362
  .title = Паказваць толькі маркеры, якія адпавядаюць пэўнаму імені
363
+ MarkerSettings--marker-filters =
364
+ .title = Фільтры маркераў
354
365
 
355
366
  ## MarkerSidebar
356
367
  ## This is the sidebar component that is used in Marker Table panel.
357
368
 
358
- MarkerSidebar--select-a-marker = Выберыце маркер, каб паглядзець інфармацыі пра яго.
369
+ MarkerSidebar--select-a-marker = Выберыце маркер, каб паглядзець інфармацыю пра яго.
359
370
 
360
371
  ## MarkerTable
361
372
  ## This is the component for Marker Table panel.
362
373
 
363
374
  MarkerTable--start = Пачатак
364
375
  MarkerTable--duration = Працягласць
365
- MarkerTable--type = Тып
366
- MarkerTable--description = Апісанне
376
+ MarkerTable--name = Назва
377
+ MarkerTable--details = Падрабязнасці
367
378
 
368
379
  ## MenuButtons
369
380
  ## These strings are used for the buttons at the top of the profile viewer.
@@ -457,6 +468,8 @@ MenuButtons--metaInfo--logical-cpu =
457
468
  [few] { $logicalCPUs } лагічных ядра
458
469
  *[many] { $logicalCPUs } лагічных ядзер
459
470
  }
471
+ MenuButtons--metaInfo--profiling-started = Запіс пачаўся:
472
+ MenuButtons--metaInfo--profiling-session = Працягласць запісу:
460
473
  MenuButtons--metaInfo--main-process-started = Асноўны працэс пачаўся:
461
474
  MenuButtons--metaInfo--main-process-ended = Асноўны працэс скончыўся:
462
475
  MenuButtons--metaInfo--interval = Інтэрвал:
@@ -476,6 +489,7 @@ MenuButtons--metaInfo--buffer-duration-seconds =
476
489
  MenuButtons--metaInfo--buffer-duration-unlimited = Неабмежавана
477
490
  MenuButtons--metaInfo--application = Праграма
478
491
  MenuButtons--metaInfo--name-and-version = Назва і версія:
492
+ MenuButtons--metaInfo--application-uptime = Час працы:
479
493
  MenuButtons--metaInfo--update-channel = Канал абнаўлення:
480
494
  MenuButtons--metaInfo--build-id = ID зборкі:
481
495
  MenuButtons--metaInfo--build-type = Тып зборкі:
@@ -740,7 +754,6 @@ TrackNameButton--hide-process =
740
754
 
741
755
  TrackMemoryGraph--relative-memory-at-this-time = адносная памяць на гэты момант
742
756
  TrackMemoryGraph--memory-range-in-graph = дыяпазон памяці ў графіку
743
- TrackMemoryGraph--operations-since-the-previous-sample = аперацый, пачынаючы з папярэдняга ўзору
744
757
 
745
758
  ## TrackPower
746
759
  ## This is used to show the power used by the CPU and other chips in a computer,
@@ -824,6 +837,25 @@ TrackPower--tooltip-energy-carbon-used-in-preview-milliwatthour = { $value } м
824
837
  TrackPower--tooltip-energy-carbon-used-in-preview-microwatthour = { $value } мкВт·гад ({ $carbonValue } мг CO₂e)
825
838
  .label = Энергія, якая спажываецца ў бягучай выбарцы
826
839
 
840
+ ## TrackBandwidth
841
+ ## This is used to show how much data was transfered over time.
842
+ ## For the strings in this group, the carbon dioxide equivalent is estimated
843
+ ## from the amount of data transfered.
844
+ ## The carbon dioxide equivalent represents the equivalent amount
845
+ ## of CO₂ to achieve the same level of global warming potential.
846
+
847
+ # This is used in the tooltip of the bandwidth track.
848
+ # Variables:
849
+ # $value (String) - the value for the data transfer speed.
850
+ # Will contain the unit (eg. B, KB, MB)
851
+ TrackBandwidthGraph--speed = { $value } у секунду
852
+ .label = Хуткасць перадачы для гэтай выбаркі
853
+ # This is used in the tooltip of the bandwidth track.
854
+ # Variables:
855
+ # $value (String) - how many read or write operations were performed since the previous sample
856
+ TrackBandwidthGraph--read-write-operations-since-the-previous-sample = { $value }
857
+ .label = аперацый уводу/вываду з часу папярэдняй выбаркі
858
+
827
859
  ## TrackSearchField
828
860
  ## The component that is used for the search input in the track context menu.
829
861
 
@@ -896,6 +928,10 @@ TransformNavigator--collapse-direct-recursion-only = Згарнуць тольк
896
928
  # Variables:
897
929
  # $item (String) - Name of the function that transform applied to.
898
930
  TransformNavigator--collapse-function-subtree = Згарнуць паддрэва: { $item }
931
+ # "Drop samples outside of markers matching ..." transform.
932
+ # Variables:
933
+ # $item (String) - Search filter of the markers that transform will apply to.
934
+ TransformNavigator--drop-samples-outside-of-markers-matching = Адкідваць сэмплы па-за межамі маркераў, якія адпавядаюць: “{ $item }”
899
935
 
900
936
  ## "Bottom box" - a view which contains the source view and the assembly view,
901
937
  ## at the bottom of the profiler UI
@@ -169,6 +169,46 @@ CallTree--inlining-badge = (inlined)
169
169
  ## This is the sidebar component that is used in Call Tree and Flame Graph panels.
170
170
 
171
171
  CallTreeSidebar--select-a-node = Wählen Sie einen Knoten aus, um Informationen darüber anzuzeigen.
172
+ CallTreeSidebar--call-node-details = Details zum Aufrufknoten
173
+
174
+ ## CallTreeSidebar timing information
175
+ ##
176
+ ## Firefox Profiler stops the execution of the program every 1ms to record the
177
+ ## stack. Only thing we know for sure is the stack at that point of time when
178
+ ## the stack is taken. We try to estimate the time spent in each function and
179
+ ## translate it to a duration. That's why we use the "traced" word here.
180
+ ## There is actually no difference between "Traced running time" and "Running
181
+ ## time" in the context of the profiler. We use "Traced" to emphasize that this
182
+ ## is an estimation where we have more space in the UI.
183
+ ##
184
+ ## "Self time" is the time spent in the function itself, excluding the time spent
185
+ ## in the functions it called. "Running time" is the time spent in the function
186
+ ## itself, including the time spent in the functions it called.
187
+
188
+ CallTreeSidebar--traced-running-time =
189
+ .label = Nachverfolgte Laufzeit
190
+ CallTreeSidebar--traced-self-time =
191
+ .label = Nachverfolgte Eigenzeit
192
+ CallTreeSidebar--running-time =
193
+ .label = Laufzeit
194
+ CallTreeSidebar--self-time =
195
+ .label = Eigenzeit
196
+ CallTreeSidebar--running-samples =
197
+ .label = Laufende Stichproben
198
+ CallTreeSidebar--self-samples =
199
+ .label = Eigenstichproben
200
+ CallTreeSidebar--running-size =
201
+ .label = Laufgröße
202
+ CallTreeSidebar--self-size =
203
+ .label = Eigengröße
204
+ CallTreeSidebar--categories = Kategorien
205
+ CallTreeSidebar--implementation = Implementierung
206
+ CallTreeSidebar--running-milliseconds = Laufende Millisekunden
207
+ CallTreeSidebar--running-sample-count = Anzahl laufende Stichproben
208
+ CallTreeSidebar--running-bytes = Laufende Bytes
209
+ CallTreeSidebar--self-milliseconds = Eigene Millisekunden
210
+ CallTreeSidebar--self-sample-count = Anzahl Eigenstichproben
211
+ CallTreeSidebar--self-bytes = Eigene Bytes
172
212
 
173
213
  ## CompareHome
174
214
  ## This is used in the page to compare two profiles.
@@ -371,8 +411,8 @@ MarkerSidebar--select-a-marker = Wählen Sie eine Markierung aus, um Information
371
411
 
372
412
  MarkerTable--start = Beginn
373
413
  MarkerTable--duration = Dauer
374
- MarkerTable--type = Typ
375
- MarkerTable--description = Beschreibung
414
+ MarkerTable--name = Name
415
+ MarkerTable--details = Details
376
416
 
377
417
  ## MenuButtons
378
418
  ## These strings are used for the buttons at the top of the profile viewer.
@@ -686,6 +726,13 @@ TabBar--marker-table-tab = Markierungstabelle
686
726
  TabBar--network-tab = Netzwerk
687
727
  TabBar--js-tracer-tab = JS-Aufzeichnung
688
728
 
729
+ ## TabSelectorMenu
730
+ ## This component is a context menu that's opened when you click on the root
731
+ ## range at the top left corner for profiler analysis view. It's used to switch
732
+ ## between tabs that were captured in the profile.
733
+
734
+ TabSelectorMenu--all-tabs-and-windows = Alle Tabs und Fenster
735
+
689
736
  ## TrackContextMenu
690
737
  ## This is used as a context menu for timeline to organize the tracks in the
691
738
  ## analysis UI.
@@ -702,6 +749,10 @@ TrackContextMenu--hide-other-screenshots-tracks = Andere Screenshots-Tracks ausb
702
749
  TrackContextMenu--hide-track = „{ $trackName }“ verbergen
703
750
  TrackContextMenu--show-all-tracks = Alle Tracks anzeigen
704
751
  TrackContextMenu--show-local-tracks-in-process = Alle Tracks in diesem Prozess anzeigen
752
+ # This is used as the context menu item to hide all tracks of the selected track's type.
753
+ # Variables:
754
+ # $type (String) - Name of the type of selected track to hide.
755
+ TrackContextMenu--hide-all-tracks-by-selected-track-type = Alle Spuren vom Typ „{ $type }“ ausblenden
705
756
  # This is used in the tracks context menu as a button to show all the tracks
706
757
  # that match the search filter.
707
758
  TrackContextMenu--show-all-matching-tracks = Alle passenden Tracks anzeigen
@@ -727,7 +778,7 @@ TrackNameButton--hide-process =
727
778
 
728
779
  TrackMemoryGraph--relative-memory-at-this-time = Relativer Speicherverbrauch zu diesem Zeitpunkt
729
780
  TrackMemoryGraph--memory-range-in-graph = Speicherbereich im Diagramm
730
- TrackMemoryGraph--operations-since-the-previous-sample = Operationen seit der vorherigen Stichprobe
781
+ TrackMemoryGraph--allocations-and-deallocations-since-the-previous-sample = Allokationen und Aufhebungen von Allokationen seit der vorherigen Stichprobe
731
782
 
732
783
  ## TrackPower
733
784
  ## This is used to show the power used by the CPU and other chips in a computer,
@@ -754,6 +805,21 @@ TrackPower--tooltip-power-watt = { $value } W
754
805
  # $value (String) - the power value at this location
755
806
  TrackPower--tooltip-power-milliwatt = { $value } mW
756
807
  .label = Leistung
808
+ # This is used in the tooltip when the power value uses the kilowatt unit.
809
+ # Variables:
810
+ # $value (String) - the power value at this location
811
+ TrackPower--tooltip-average-power-kilowatt = { $value } kW
812
+ .label = Durchschnittliche Leistung in der aktuellen Auswahl
813
+ # This is used in the tooltip when the power value uses the watt unit.
814
+ # Variables:
815
+ # $value (String) - the power value at this location
816
+ TrackPower--tooltip-average-power-watt = { $value } W
817
+ .label = Durchschnittliche Leistung in der aktuellen Auswahl
818
+ # This is used in the tooltip when the instant power value uses the milliwatt unit.
819
+ # Variables:
820
+ # $value (String) - the power value at this location
821
+ TrackPower--tooltip-average-power-milliwatt = { $value } mW
822
+ .label = Durchschnittliche Leistung in der aktuellen Auswahl
757
823
  # This is used in the tooltip when the energy used in the current range uses the
758
824
  # kilowatt-hour unit.
759
825
  # Variables:
@@ -811,6 +877,46 @@ TrackPower--tooltip-energy-carbon-used-in-preview-milliwatthour = { $value } mWh
811
877
  TrackPower--tooltip-energy-carbon-used-in-preview-microwatthour = { $value } µWh ({ $carbonValue } mg CO₂e)
812
878
  .label = In der aktuellen Auswahl verwendete Energie
813
879
 
880
+ ## TrackBandwidth
881
+ ## This is used to show how much data was transfered over time.
882
+ ## For the strings in this group, the carbon dioxide equivalent is estimated
883
+ ## from the amount of data transfered.
884
+ ## The carbon dioxide equivalent represents the equivalent amount
885
+ ## of CO₂ to achieve the same level of global warming potential.
886
+
887
+ # This is used in the tooltip of the bandwidth track.
888
+ # Variables:
889
+ # $value (String) - the value for the data transfer speed.
890
+ # Will contain the unit (eg. B, KB, MB)
891
+ TrackBandwidthGraph--speed = { $value } pro Sekunde
892
+ .label = Übertragungsgeschwindigkeit für diese Teilmenge
893
+ # This is used in the tooltip of the bandwidth track.
894
+ # Variables:
895
+ # $value (String) - how many read or write operations were performed since the previous sample
896
+ TrackBandwidthGraph--read-write-operations-since-the-previous-sample = { $value }
897
+ .label = Lese-/Schreiboperationen seit der vorherigen Teilmenge
898
+ # This is used in the tooltip of the bandwidth track.
899
+ # Variables:
900
+ # $value (String) - the total of transfered data until the hovered time.
901
+ # Will contain the unit (eg. B, KB, MB)
902
+ # $carbonValue (string) - the carbon dioxide equivalent (CO₂e) value in grams
903
+ TrackBandwidthGraph--cumulative-bandwidth-at-this-time = { $value } ({ $carbonValue } g CO₂e)
904
+ .label = Bislang übertragene Daten
905
+ # This is used in the tooltip of the bandwidth track.
906
+ # Variables:
907
+ # $value (String) - the total of transfered data during the visible time range.
908
+ # Will contain the unit (eg. B, KB, MB)
909
+ # $carbonValue (string) - the carbon dioxide equivalent (CO₂e) value in grams
910
+ TrackBandwidthGraph--total-bandwidth-in-graph = { $value } ({ $carbonValue } g CO₂e)
911
+ .label = Im sichtbaren Bereich übertragene Daten
912
+ # This is used in the tooltip of the bandwidth track when a range is selected.
913
+ # Variables:
914
+ # $value (String) - the total of transfered data during the selected time range.
915
+ # Will contain the unit (eg. B, KB, MB)
916
+ # $carbonValue (string) - the carbon dioxide equivalent (CO₂e) value in grams
917
+ TrackBandwidthGraph--total-bandwidth-in-range = { $value } ({ $carbonValue } g CO₂e)
918
+ .label = In der aktuellen Auswahl übertragene Daten
919
+
814
920
  ## TrackSearchField
815
921
  ## The component that is used for the search input in the track context menu.
816
922