profile-viewer 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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