import 'settings_group.dart'; /// 약속 (설정 A): 환경 설정 > 웹 브라우저 (앱 안 · 외부) - 자기 키 (이름 · 처음 값 · 읽기 · 쓰기) 를 스스로 갖는다. /// 설정 하나를 더할 때는 이 파일만 고친다. 저장 파일의 키 이름은 예전 그대로 (평평한 키) class BrowserSettings implements SettingsGroup { /// 웹 브라우저에서 YouTube 광고 자동 건너뛰기 (건너뛰기 버튼 누르기 · 건너뛸 수 없는 광고는 빨리 감기 · 소리 끄기) bool adSkip = true; /// YouTube 페이지의 광고 배너 · 광고 영역 숨기기 bool adHide = true; /// 웹 브라우저 위에 다른 화면이 올라오거나 다른 화면으로 가면 페이지의 동영상 · 소리를 멈춤 (끄면 계속 들림) bool pauseOnLeave = true; String homeUrl = 'https://www.youtube.com/'; /// 앱 안 브라우저 엔진: 'edge' (WebView2, 기본). 'chrome' 은 내려받아 연결 (준비 중) String engine = 'edge'; /// 207: 관리자 권한으로 실행 중일 때도 내장 Chrome 엔진을 쓸지 (처음 꺼짐 - 관리자 판단: 보안이 먼저, CEF 는 샌드박스가 꺼져 있다) bool cefWhenElevated = false; /// "외부 브라우저로 열기" 에 쓸 브라우저: 'system' · 'chrome' · 'firefox' · 'edge' · 'whale' String external = 'system'; /// 앱 안 브라우저: 다른 언어로 된 웹 페이지를 화면 언어 ([uiLanguage]) 로 자동 번역 (Google 번역) bool translate = false; /// 앱 안 브라우저: 페이지의 JavaScript 실행 (끄면 스크립트 없이 글 · 그림만) bool javaScript = true; /// 66-2: 웹 브라우저에서 화면 옮기기 (위쪽 막대를 좌우로) 안내를 한 번 보였는지 bool swipeHinted = false; @override void write(Map j, {required bool plainSecrets}) { j['youtubeAdSkip'] = adSkip; j['youtubeAdHide'] = adHide; j['webPauseOnLeave'] = pauseOnLeave; j['homeUrl'] = homeUrl; j['browserEngine'] = engine; j['cefWhenElevated'] = cefWhenElevated; j['externalBrowser'] = external; j['webTranslate'] = translate; j['webJavaScript'] = javaScript; j['browserSwipeHinted'] = swipeHinted; } @override void read(Map j) { adSkip = j['youtubeAdSkip'] as bool? ?? true; adHide = j['youtubeAdHide'] as bool? ?? true; pauseOnLeave = j['webPauseOnLeave'] as bool? ?? true; homeUrl = j['homeUrl'] as String? ?? 'https://www.youtube.com/'; engine = j['browserEngine'] as String? ?? 'edge'; cefWhenElevated = j['cefWhenElevated'] == true; external = j['externalBrowser'] as String? ?? 'system'; translate = j['webTranslate'] as bool? ?? false; javaScript = j['webJavaScript'] as bool? ?? true; swipeHinted = j['browserSwipeHinted'] == true; } }