Local Network Access permission storage + `permissions.query()`
Component: WebKit NetworkProcess | f83ad9a
Local Network Access(LNA)는 사용자가 permission을 허용하지 않은 페이지가 local/loopback 리소스에 접근하지 못하도록 제한합니다. 이 판단은 NetworkProcess에서 강제됩니다. 반면 navigator.permissions.query()에 대한 응답은 보통 UI process가 담당합니다. 이번 commit에서는 NetworkProcess 쪽에 LNA 허용/거부 결정을 저장하는 storage가 추가되었습니다. 함께 revocation 경로와 'local-network'/'loopback-network'에 대한 permissions.query() 지원도 구현되었습니다. 이전에는 check 알고리즘이 grant map을 참조했지만, 정작 이 map에 기록하는 코드가 없었습니다. 그래서 허용 결정이 실제로 반영되는 경로 자체가 존재하지 않았습니다.
Significance
LNA의 permission 모델이 처음으로 실제 동작하게 되었고, 최종 판단도 이를 강제하는 process로 옮겨졌습니다. 이로써 페이지에는 'granted'로 응답하면서 실제 접근은 거부되던 불일치가 해소되었습니다. WebPermissionController는 이 두 이름을 별도로 처리합니다. 따라서 web process는 해당 query를 NetworkProcess로 직접 전달합니다. 결정은 요청 origin과 top-level origin을 함께 key로 사용해 저장됩니다. 또한 하나의 통합 상태가 아니라 서로 다른 두 permission으로 관리되는데, 분리 이전의 Chromium 모델과 다른 점입니다.