I2 — 한선씨 크롬을 실제 브라우저에 배선
개요
크라우니브라우저(Path A, WebKit 래퍼)의 상단 크롬을 Cocoa NSToolbar/NSButton 대신
한선씨 fb 기반 렌더(브라우저크롬.한선)로 배선. "Cocoa를 한선씨로 대체"를 실제 구동 경로에 연결.
무엇을 했는지
crowny-browser.m 확장(재작성 아님):
CrownyChromeView (커스텀 NSView, isFlipped=YES) 추가.
refreshChrome → 브라우저크롬.toau 를 crownyc cmd 모드로 실행(주소/순수모드 env 전달)
→ cmd 스트림(INIT/RECT/ROUND/TEXT/END) 파싱(parseChromeCmd:) → drawRect: 에서 직접 그림.
hitTestActionAtX:y: (클래스 메서드) — 좌표→액션 라우팅
(뒤로/앞으로/새로고침/주소창/순수토글/피드백/새탭). 툴바그리기() 레이아웃과 1:1.
mouseDown: → 히트테스트 → chromeAction: 델리게이트로 라우팅.
CrownyChromeViewDelegate 프로토콜 구현(델리게이트): goBack/goForward/reload/
togglePure/feedback/addressBar. 주소창은 임시 Cocoa 오버레이 필드로 입력(한선씨 입력위젯 후속).
CROWNY_HANSEON_CHROME=1 env 게이트: 활성 시 Cocoa _tabBar/_navBar hidden +
한선씨 크롬을 상단 92px 오버레이로 배치. 미설정 시 기존 Cocoa 크롬 그대로(공존/대체 토글).
네비게이션 완료/탭 동기화 시 refreshChrome 호출(주소창 동기화).
크롬히트테스트.한선 동반 작성 — .m hitTestActionAtX:y: 와 1:1 한선씨 단위검증.검증 (헤드리스)
- make EXIT=0 (clean cc EXIT=0, 0 warning/error). CrownyChromeView 심볼 링크 확인(nm/otool).
- FB 렌더 파이프라인: CROWNY_FB_STAT=1 → 1280x800 비배경 990087/1024000 (96.6%) 실측.
- cmd 파이프라인(.m 경로): cmd 모드 30 drawable cmds, /tmp/크롬렌더.cmd 기록.
- 히트테스트 단위검증: 크롬히트테스트.한선 13/13 티 (좌표→액션 .m 과 1:1).
관련 파일
- /Users/ef/CrownyBrowser/native/crowny-browser.m (CrownyChromeView + 델리게이트 배선)
- /Users/ef/CrownyBrowser/native/브라우저크롬.한선 (기존 자산, cmd 발행원)
- /Users/ef/CrownyBrowser/native/크롬히트테스트.한선 (동반 단위검증)
- /Users/ef/CrownyBrowser/native/vm-samples/브라우저크롬.toau (빌드 산출)
- /Users/ef/CrownyBrowser/native/Makefile
잔여 이슈 (정직)
- 실제 창 시각 표시 + 마우스 클릭은 디스플레이 필요 → 미실측. 헤드리스(fb_rgb/cmd/히트테스트)까지만 실측.
- 주소창 입력은 한선씨 입력 위젯/IME 미구현 → 임시 Cocoa 오버레이 필드 브릿지. (완전 대체 후속)
- 뒤로/앞으로 비활성 시각(_뒤로가능/_앞으로가능) 은 한선씨 측 기본값 사용 — 실시간 canGoBack 반영 후속.
- 탭 전환(탭바 탭 클릭→탭 활성)은 새탭(+) 만 라우팅, 개별 탭 히트테스트 후속.