- deepFindButtons(): traverse iframe contentDocument, webview.executeJavaScript, shadow DOMs - dumpDOMStructure(): startup diagnostic dump of all iframes/webviews/buttons - 3-phase trigger-click: deep DOM → webview execJS → iframe direct - known-issues: webview iframe isolation confirmed, v3 solution documented
1.9 KiB
1.9 KiB
Renderer v3 — webview iframe 격리 확인 + deep DOM traversal
- 시작: 15:32 KST
- 종료: 17:59 KST
- 상태: 🔧 미완료 (AG 재시작 후 DOM-DUMP 결과 확인 필요)
핵심 발견
webview iframe 격리 확인
- Bridge HTTP 서버(port 34332) 정상 동작:
/ping→pong,/trigger-click→{action:null} - Extension log 분석: Renderer DOM Observer가 감지한 버튼들은
RunAlt+?등 외부 DOM trust-level 버튼 - Run/Accept 버튼은 webview iframe (
vscode-webview://origin) 안에 존재 - 외부 workbench DOM (
vscode-file://origin)에서는 cross-origin으로 접근 불가
v3 deep DOM traversal 구현
generateApprovalObserverScript() 전면 업그레이드:
-
deepFindButtons()— 패턴 매칭 버튼을 재귀적으로 검색:- Main document (기존)
- iframe
contentDocument(same-origin이면 접근 가능) <webview>.executeJavaScript()(Electron API — webview 내부 코드 실행)- Shadow DOM 재귀 탐색
-
dumpDOMStructure()— 시작 3초 후 1회 실행:- 모든 iframe 목록 + 접근성 (ACCESSIBLE/BLOCKED)
- 모든
<webview>목록 + 접근성 - 메인 DOM 버튼 목록 (처음 10개)
-
3-Phase trigger-click:
- Phase 1: deep DOM search (main + iframes + shadow)
- Phase 2:
<webview>.executeJavaScript()(DOM 미접근 시 fallback) - Phase 3: iframe direct access retry
다음 단계
- AG 완전 재시작 → Renderer v3 스크립트 로딩 확인
- DevTools에서
[GB Observer] DOM-DUMP:로그 확인 - iframe/webview 접근성 확인 → ACCESSIBLE이면 즉시 E2E 테스트
- BLOCKED이면 다음 대안 탐색
파일 변경
| 파일 | 변경 |
|---|---|
extension/src/extension.ts |
v3 renderer: deepFindButtons, dumpDOMStructure, 3-phase trigger-click |
.agents/references/known-issues.md |
webview iframe 격리 확인 + v3 기록 |