기여 목록 / 8512139
Introduce DEFAULT_VIEW in ClassesPaneWidget
DevToolsrefactordevtools/devtools-frontendIn Review
panels/elements/ClassesPaneWidget.ts 를 view 함수 구조로 옮기는 연작의 첫 CL 입니다. 방향 확인을 위해 범위를 최소화했습니다.
문제 설명
- 생성자에서
createChild로 DOM 을 만들고 갱신 때removeChildren()과appendChild()로 교체하는 명령형 구조 docs/ui_engineering.md는 렌더링을DEFAULT_VIEW로 분리하고 view 를 주입하는 구조를 규정- 같은 디렉터리의 동종 위젯
ElementStatePaneWidget은 이미 전환된 상태
해결 내용
패널 셸(제목 컨테이너와 체크박스 컨테이너)만 DEFAULT_VIEW 로 옮겼습니다.
constructor(view: View = DEFAULT_VIEW)로 view 주입- 체크박스 목록은 아직 명령형으로 둠
- 기존 테스트가 이벤트 직후 동기적으로
CheckboxLabel.create호출 수를 확인함 requestUpdate()는 큐에 넣는 비동기라 바로 바꾸면 깨짐. 다음 CL 에서 테스트와 함께 옮길 예정
- 기존 테스트가 이벤트 직후 동기적으로
- 프롬프트는 생성자에서 한 번만 붙이고 proxy 를 view 에 넘김
TextPrompt.attach()는 두 번 호출하면 예외를 던지므로 Lit 이 만든 요소에 붙이는 방식은 안전하지 않음
테스트 방법
panels/elements:unittests빌드ClassesPaneWidget.test.ts통과- 동작 변경 없음 (렌더 후 DOM 구조와 CSS 선택자 동일)
배운 점
Bug:번호는 마이그레이션 영역마다 다름- 처음에
panels/accessibility의 번호(414630400)를 썼다가panels/elements의407751692로 수정
- 처음에
- 비슷한 마이그레이션이라도 디렉터리마다 관례가 다름
DEFAULT_VIEW상수 대신defaultView함수를 쓰는 곳도 있어, 선례를 고를 때 같은 디렉터리를 먼저 봐야 함
참고 자료
third_party/devtools-frontend/src/front_end/panels/elements/ClassesPaneWidget.tsthird_party/devtools-frontend/src/docs/ui_engineering.md