[2026-10-08] eagle: work/projects/cpm-web-extension-repro-and-fix-2026-10-08.md
This commit is contained in:
1 parent
abc033a963
commit
2b81869631
1 file changed
+7
@@ -187,6 +187,13 @@ cd SharedPackages/WebExtensions && CPM_REPRO=1 swift test --filter CPMReproBackg
|
||||
- Блокировка устройства: у iOS-приложения нет entitlement'а `default-data-protection` → класс `CompleteUntilFirstUserAuthentication`; файлы доступны при блокировке после первой разблокировки. Исключение — запуск до первой разблокировки, для него есть `protectedDataLoadGate`.
|
||||
- Устаревший URL вкладки на iOS (`addressBarURLFilter` не обновляет URL при межоригинном переходе со страницы): в `didCommit` `url = webView.url` выставляется синхронно до `init` → для обычной навигации ответ приходит с верным URL.
|
||||
|
||||
**Стабильный `baseURL` (ветка `alex/cpm-stable-base-url`, не закоммичено): оценка.**
|
||||
- Объясняет только подгруппу «после load/reload» (~¼ iOS, ~15% macOS группы 1) и, вероятно, первый сбой после M4. Основная часть (пробуждение после idle) не затронута: чистка идёт только в `load()`.
|
||||
- Изменение: `context.baseURL = webkit-extension://<uniqueIdentifier>/`, где `uniqueIdentifier` = `UUID()` на установку/обновление (`WebExtensionManager+EmbeddedExtensions.swift:157`).
|
||||
- Приватность: во всех 4 встроенных манифестах нет `web_accessible_resources`; `cpm.js` не вызывает `runtime.getURL`; в background `getURL` только для `tabs.create` (страница расширения). Страница не может прочитать или проверить URL. Данные origin расширения и сейчас переживают перезапуск: WebKit их переносит (`_renameOrigin`). Риск появится, если расширение с WAR получит стабильный URL. Поэтому стабильный URL нужен только для встроенных расширений без WAR.
|
||||
- Обновление: новый UUID → новый URL; старый контекст выгружается до загрузки нового — проверить. M4 reload с тем же URL: проверить, что нет `BaseURLAlreadyInUse` и что битая SW-регистрация не переживает reload (сценарии network-crash + watchdog).
|
||||
- До принятия: прогнать harness (cleanup, M4, network crash) на ветке; телеметрия длительности load→view.
|
||||
|
||||
### Привязка вкладок на macOS (`tab_controller_match=false` + нет scripts, ~100 строк)
|
||||
|
||||
- **Гипотеза атрибуции не подтвердилась.** Путь в коде есть: выключение флага `webExtensions` вызывает `uninstallAllExtensions()` и обнуляет менеджер, включение создаёт новый с новым controller, а `WKWebViewConfiguration` старых вкладок не меняется. Но флаг `.webExtensions` = `remoteReleasable(WebExtensionsSubfeature.featureEnabled)` с `defaultValue: .enabled`, а подфичи `featureEnabled` нет ни во встроенном, ни в текущем удалённом `macos-config.json` → флаг всегда `enabled` (отсутствующая подфича возвращает `defaultValue`). Мигать нечему.
|
||||
|
||||
Reference in new issue
Block a user