매니페스트 버전3 변경 점검 목록

이 문서에서는 매니페스트 버전2로 개발된 확장앱을 매니페스트 버전3에서 동작하게 하려면 어떤 작업이 필요한지 빠르게 확인할 수 있습니다. 매니페스트 버전3 변경에 대한 자세한 내용은 매니페스트 버전3로 변경하기를 참고하십시오.

API 점검 목록

API 형식 변화에 따라 수정이 필요할 수 있습니다.

매니페스트에 호스트 권한이 설정되어 있습니까?

매니페스트 버전3에서 호스트 권한은 별도 항목으로 분리되었습니다.
호스트 권한은 permissions 혹은 optional_permissions에 정의할 수 없으므로
host_permissions 항목으로 옮기십시오.

백그라운드 페이지를 사용하고 있습니까?

매니페스트 버전3에서 백그라운드 페이지는 서비스 워커로 대체되었습니다.

  • manifest.json 파일에서 background.page 혹은 background.scriptsbackground.service_worker로 변경하십시오. service_worker는 배열이 아니라 문자열입니다.
  • manifest.json 파일에서 background.persistent 항목을 삭제하십시오.
  • 백그라운드 스크립트를 서비스 워커 실행 맥락에 맞게 수정하십시오.

manifest.json에 browser_action 혹은 page_action 속성이 포함되어 있습니까?

매니페스트 버전3에서 두 속성은 단일한 속성 action으로 통합되었습니다.
해당 속성을 action으로 변경하십시오.

whale.browserAction 혹은 whale.pageAction 자바스크립트 API를 사용하고 있습니까?

매니페스트 버전3에서 두 API는 통합되었습니다.
Action API를 사용하도록 수정하십시오.

whale.webRequest API를 사용하여 네트워크 요청을 차단하고 있습니까?

매니페스트 버전3에서 해당 API는 declarativeNetRequest로 대체되었습니다.

  • whale.declarativeNetRequest 규칙을 사용하도록 동작을 수정하십시오.
  • webRequestBlocking 권한을 declarativeNetRequest로 변경하십시오.
  • 더 이상 네트워크 요청을 감지할 필요가 없다면 webRequest 권한을 삭제하십시오.
  • 불필요한 호스트 권한을 삭제하십시오.
    declarativeNetRequest 권한이 있다면 요청 차단, 프로토콜 업그레이드 등의 동작에 호스트 권한이 필요하지 않습니다.

whale.tabs API 중 아래 코드 실행 메서드를 사용하고 있습니까?

매니페스트 버전3에서 일부 메서드는 whale.tabs API에서 whale.scripting API로 옮겨졌습니다.
만약 아래 매니페스트 버전2 메서드를 사용하는 부분이 있다면 대응하는 매니페스트 버전3 API로 교체하십시오.

매니페스트 버전2 매니페스트 버전3
whale.tabs.executeScript() whale.scripting.executeScript()
whale.tabs.insertCSS() whale.scripting.insertCSS()
whale.tabs.removeCSS() whale.scripting.removeCSS()

원격 코드 혹은 임의의 코드 문자열을 실행하고 있습니까?

whale.scripting.executeScript({code: '...'}), eval()new Function()을 이용하여 더 이상 외부 코드를 실행할 수 없습니다

  • 모든 외부 코드(JS, Wasm, CSS)들을 확장앱 패키지 안에 포함하십시오.
  • 자바스크립트, CSS 스타일을 확장앱 내부 리소스를 참조하도록 코드를 수정하십시오.
  • 런타임에 내부 리소스 URL을 얻으려면 whale.runtime.getURL()을 사용합니다.

매니페스트 버전2 백그라운드 맥락을 기대하는 함수를 실행하고 있습니까?

매니페스트 버전3에서 도입된 서비스 워커 구조에서는 whale.runtime.getBackgroundPage(),
whale.extension.getBackgroundPage(), whale.extension.getExtensionTabs(), whale.extension.getViews()등의 메서드를 사용할 수 없습니다. 백그라운드 서비스 워커와 다른 맥락간 메시지 교환을 사용하는 설계로 수정하십시오.

보안 점검 목록

보안 정책 변경에 따라 수정이 필요할 수 있습니다.

콘텐츠 스크립트에서 CORS 요청을 보내고 있습니까?

백그라운드 서비스 워커에서 요청하도록 수정하십시오.

manifest.json에 content_security_policy 항목을 정의했습니까?

  • content_security_policycontent_security_policy.extension_pages
    혹은 content_security_policy.sandbox로 적절하게 수정하십시오.
  • 만약 외부 도메인이 script-src, worker-src, object-src, style-src 지시자에 정의되어 있다면 삭제하십시오.

매니페스트 버전3로 변경하기