Files
FoxBrowser/ULTRALIGHT_EVAL_RESULTS.md
T
2026-10-01 01:46:18 +03:00

83 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Результати тестування Ultralight (Крок 0 / Go-No-Go)
Тестування виконано згідно з вимогами `ULTRALIGHT_AGENT_GUIDE.md` на Windows 10 x64, .NET 8, Ultralight v1.3.0 (WebKit 610.4.3.1.4, JavaScriptCore).
---
## 1. Конфігурація середовища тестування
- **Платформа:** Windows 10 (10.0.19045), x64
- **Runtime:** .NET 8.0 (`net8.0-windows`)
- **Бібліотеки:** `UltralightNet` 1.3.0, `UltralightNet.AppCore` 1.3.0, `UltralightNet.Binaries` 1.3.0
- **Нативні ресурси:** `AppCore.dll`, `Ultralight.dll`, `UltralightCore.dll`, `WebCore.dll`, `icudt67l.dat`, `cacert.pem`
- **Тестові цілі:**
1. `about:blank` (перевірка наявності Web/Media API)
2. `https://www.youtube.com/` (головна сторінка YouTube SPA)
3. `https://www.youtube.com/watch?v=dQw4w9WgXcQ` (пряме відео)
---
## 2. Результати тестів
### 2.1. Перевірка медіа API (`canPlayType`, `HTMLVideoElement`, кодеки)
Спроба виклику `canPlayType` завершилася фатальною помилкою:
```
TypeError: document.createElement('video').canPlayType is not a function.
(In 'document.createElement('video').canPlayType(...)', 'document.createElement('video').canPlayType' is undefined)
```
- `HTMLVideoElement`: **відсутній** у global scope (`ReferenceError: Can't find variable: HTMLVideoElement`)
- `HTMLAudioElement`: **відсутній**
- `MediaSource` (MSE): **відсутній**
- `requestMediaKeySystemAccess` (EME / DRM / Widevine): **відсутній**
- `AudioContext` / Web Audio: відсутній
### 2.2. Завантаження головної сторінки YouTube (`https://www.youtube.com/`)
- **DOM:** завантажився частково (1224 елементи), контейнер `<ytd-app>` створений.
- **Помилки JS:** падіння скрипта `kevlar_base` на рядку 5444 через відсутність `HTMLVideoElement`:
```
ReferenceError: Can't find variable: HTMLVideoElement (kevlar_base_module:5444)
```
- **Відеокартки / прев'ю:** 0 знайдених рендерерів через збій у JS-ініціалізації YouTube.
- **Споживання RAM:** **~320 MB** (Single Process).
### 2.3. Завантаження сторінки з відео (`watch?v=dQw4w9WgXcQ`)
- **Заголовок сторінки:** розпізнано коректно:
`Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster) - YouTube`
- **Плеєр YouTube:** плеєр відображає системне повідомлення про несумісність:
> **«Воспроизвести видео в этом браузере нельзя. Подробнее…»**
- **Відтворення звуку:** **0 / відсутнє**. Звук не грає, потік не декодується.
- **Споживання RAM:** **441.8 MB** (для одного відкритого таба в одному процесі).
---
## 3. Порівняння: Ultralight vs WebView2
| Критерій | WebView2 (Chromium) | Ultralight v1.3.0 |
| :--- | :--- | :--- |
| **HTML5 Video / Audio** | Повноцінна підтримка | **Не працює** (`canPlayType is undefined`) |
| **YouTube HTML5 Player** | Працює ідеально | **«Не можна відтворити відео в цьому браузері»** |
| **DRM / Widevine** | Працює | **Не підтримується взагалі** |
| **Сучасні JS API** | Повна підтримка Blink | Падає на `HTMLVideoElement`, Trusted Types |
| **RAM (одна вкладка YouTube)** | ~350–450 MB (сумарно з renderer/GPU) | **441.8 MB** (один процес, навіть без відео) |
| **Виграш по RAM** | — | **0 MB** (споживання практично однакове) |
---
## 4. Висновок за правилом Go/No-Go (Крок 0)
Згідно з інструкцією `ULTRALIGHT_AGENT_GUIDE.md`:
> *«Якщо на кроці 3 YouTube взагалі не вантажиться або аудіо не програється — не переходити до Кроку 1. ...це не привід "трохи допрацювати", а сигнал, що для головного use case проєкту Ultralight як основний рушій не підходить.»*
### Вердикт: **NO-GO для заміни WebView2 на YouTube**
1. **Ultralight не здатен відтворювати YouTube усередині HTML:** рушій не має реалізації HTML5 Video/Audio кодеків, MSE та EME. YouTube видає плашку «Воспроизвести видео в этом браузере нельзя».
2. **Немає виграшу по RAM:** один процес Ultralight на сторінці YouTube зайняв **441.8 MB**, що відповідає або навіть перевищує оптимізований режим WebView2.
3. **Правильний шлях для проєкту:**
- Для веб-браузингу та навігації — **залишати WebView2**.
- Для ультралегкого звуку без навантаження на рендерер — використовувати вже створений **`NativeAudioSession` + `YtDlpExtractor`** (direct audio stream через WASAPI/MediaPlayer).
- Ultralight можна використовувати виключно для внутрішніх легких UI-віджетів/налаштувань (якщо виникне потреба у чистому локальному HTML-інтерфейсі).