Summary

  • 웹 앱은 배터리 상태를 알면 메일 서버 확인을 줄이거나 전원이 꺼지기 전에 문서를 저장할 수 있다.
  • 잔량과 남은 시간을 세밀하게 알리면 기기를 구분하는 단서도 된다. W3C 기록은 이 우려가 표준 논의에 들어와 정밀도, 허가, 값의 흐림 처리, 접근 제한으로 이어진 경위를 보여준다.

배터리가 꺼져 가는데도 몇 초마다 서버에 새 메일을 묻는 페이지는 초인종을 놓지 않는 손님 같다. 문서를 미리 저장하는 편집기는 훨씬 예의 바르다. 2016년 W3C 문서는 두 사례를 모두 든다. 브라우저가 전원 상태를 알려주면 앱이 일을 줄이거나 이미 한 일을 지킨다. 배터리와 글쓴이는 원하는 것이 다르지만 같은 신호로 도움을 받을 수 있다.

2011년 4월 첫 공개 초안에서는 더 큰 시스템 정보 API에서 배터리 이벤트를 떼어 냈다. 배터리 사용 여부, 충전 상태, 0부터 100까지의 잔량, 초 단위 남은 시간이 검토됐다. 일부 항목의 확실한 용도는 아직 찾는 중이었다. 예제는 잔량을 로그에 적는다. 이는 훗날의 getBattery()와 다른 초기 이벤트 설계다. 계기판은 놓였지만 모든 페이지에 눈금 몇 개를 보여줘야 하는지는 남았다.

세밀한 값은 일을 계획하기 좋다. 동시에 충전 여부와 잔량, 변하는 시간 추정치를 합치면 기기의 잠깐 동안의 윤곽도 만들어진다. 페이지가 주소록을 열지 않아도 책상 위 컴퓨터에 관한 특징을 알 수 있다. 절전용 계기판에 다른 구경꾼이 생긴 셈이다. 계기판은 질문이 무엇이었는지 모르고 숫자만 답한다.

이 우려가 표준 작성자에게 도착한 기록이 있다. 2015년 7월 W3C 작업반 메일에서 의장 Frederick Hirsch는 원래의 개인정보 연구를 바탕으로 한 제안을 전했다. 매우 정확한 수치가 기기 지문이 될 수 있다고 명시하고, 접근 허가를 고려하며, 사용자가 API 이용을 알 수 있게 하자는 내용이다. 작업반이 구체적 문제를 논의했다는 증거다. 모든 사이트가 배터리로 사람을 추적했다는 숫자를 지어낼 필요는 없다.

2016년 Proposed Recommendation은 높은 정밀도를 피하라고 권하고, 브라우저가 허가를 묻거나 값을 흐릴 수 있게 한다. navigator.getBattery()는 충전 상태, 잔량, 충전·방전까지의 시간을 담은 BatteryManager를 준다. 실제 상태를 알릴 수 없으면 기본값은 가득 충전됐고 전원에 연결된 듯 보인다. 사이트가 숨겨진 값만을 이유로 사용자를 불리하게 대하지 못하게 하는 장치다. 초록 불빛이 실제 축하가 아니라 브라우저의 커튼일 수도 있다.

2024년 10월 W3C 초안에서 getBattery()는 보안 컨텍스트 기능이다. Permissions Policy의 battery 기본 허용 대상은 'self'이고, 차단된 문서는 NotAllowedError를 받는다. 높은 정밀도에 관한 경고도 남아 있다. 브라우저는 허가를 묻거나 값을 흐리거나 문 앞에서 멈출 수 있다. 메일 페이지가 절전을 하려면 배터리의 마지막 순간을 초 단위로 중계받아야 하는 것은 아니다.

W3C 발표 기록에는 2011년 초안들, 2016년의 표준 단계, 2024년의 개정이 이어진다. 이는 문서의 날짜이지 모든 브라우저가 같은 날 같은 수치를 내놓았다는 연표가 아니다. 핵심 수정은 간단하다. 유용한 신호도 너무 자세하면 방문자의 이름표가 된다.

편집기는 여전히 파일을 저장해야 한다. 메일 페이지도 잠시 쉬어도 된다. 그러려면 배터리의 마지막 숨을 초시계로 세기보다 적당한 힌트를 듣는 편이 낫다.