OSSCA Chromium

기여 목록 / 8512257

FSA: Only offer dismissal for restricted directory drops

BrowserfixMerged

제한된 디렉터리를 드래그앤드롭한 경우 안내창에 확인 버튼 하나만 제공하도록 수정했습니다. 파일 선택기에서 접근한 경우에는 기존 재시도·취소 동작을 유지합니다.

문제 설명

기존 제한 디렉터리 안내창은 접근 경로와 관계없이 다른 폴더를 선택하는 버튼을 제공하고, 선택 시 SensitiveEntryResult::kTryAgain을 반환했습니다. 하지만 드래그앤드롭에는 돌아갈 파일 선택기가 없고, 데이터 전송 토큰을 처리하는 경로에서도 이 결과를 취소처럼 처리했습니다.

따라서 안내창이 제안하는 다음 행동과 실제 동작이 맞지 않았습니다. 제한된 경로에 대한 안전성 검사는 유지하면서, 드롭과 파일 선택기의 안내 동작을 구분할 필요가 있었습니다.

해결 내용

  1. 권한 컨텍스트에서 UI 스레드의 안내창 생성 경로까지 AccessTrigger를 전달해 드래그앤드롭인지 구분합니다.
  2. kDragAndDrop이면 확인 버튼에 IDS_APP_OK 문구를 사용하고 취소 버튼은 추가하지 않습니다. 확인하거나 창을 닫으면 모두 SensitiveEntryResult::kAbort를 반환합니다.
  3. 파일 선택기 등 다른 접근 경로에서는 기존 재시도 버튼과 취소 버튼을 유지합니다. 재시도는 kTryAgain, 취소·닫기는 kAbort로 처리합니다.
  4. 안내창과 단위 테스트의 BUILD.gn에 UI 문자열 의존성을 추가합니다. 드롭도 파일 선택기와 같은 민감 경로 검사를 사용한다는 점은 유지하고, 전용 안내창이 없다는 오래된 TODO를 정리합니다.

테스트 방법

테스트 검증 내용
DragAndDropAccept 드롭 안내창의 확인 버튼을 누르면 콜백이 실행되고 kAbort를 반환합니다.
DragAndDropClose 드롭 안내창을 닫아도 콜백이 실행되고 kAbort를 반환합니다.
DragAndDropButtons 확인 버튼 문구가 IDS_APP_OK와 일치하고 취소 버튼은 없는지 확인합니다.
InvokeUi_drag_and_drop 드롭용 안내창을 표시하는 브라우저 UI 테스트를 추가합니다.

기존 파일 선택기용 단위 테스트는 기본 접근 경로를 kOpen으로 지정해 재시도·취소·닫기·초기 포커스 등의 동작을 계속 확인합니다. 기본 안내창의 브라우저 UI 테스트도 유지합니다.

확인한 CQ 통과 기록은 Patch Set 2의 2026년 10월 4일 UTC 실행입니다. 이를 현재 Patch Set 4의 CQ 통과로 취급하지 않습니다. 위 내용은 최신 패치와 Gerrit 기록을 기준으로 정리했으며, 보고서 작성 과정에서 Chromium 테스트를 별도로 실행하지는 않았습니다.

관련 이슈와 외부 PR

배운 점

  • 같은 제한 디렉터리 안내창이라도 파일 선택과 드래그앤드롭에서 사용자가 할 수 있는 다음 행동은 다를 수 있습니다.
  • 버튼 문구뿐 아니라 버튼이 전달하는 재시도·중단 결과와 포커스도 함께 확인해야 합니다.

참고 자료