+ // Declare the class views.
+ private ActionBar actionBar;
+ private CoordinatorLayout coordinatorLayout;
+ private ImageView bookmarksDrawerPinnedImageView;
+ private DrawerLayout drawerLayout;
+ private LinearLayout findOnPageLinearLayout;
+ private FrameLayout fullScreenVideoFrameLayout;
+ private FrameLayout rootFrameLayout;
+ private SwipeRefreshLayout swipeRefreshLayout;
+ private LinearLayout tabsLinearLayout;
+ private TabLayout tabLayout;
+ private Toolbar toolbar;
+ private EditText urlEditText;
+ private RelativeLayout urlRelativeLayout;
+ private ViewPager webViewPager;
+
+ // Declare the class menus.
+ private Menu optionsMenu;
+
+ // Declare the class menu items.
+ private MenuItem navigationBackMenuItem;
+ private MenuItem navigationForwardMenuItem;
+ private MenuItem navigationHistoryMenuItem;
+ private MenuItem navigationRequestsMenuItem;
+ private MenuItem optionsPrivacyMenuItem;
+ private MenuItem optionsRefreshMenuItem;
+ private MenuItem optionsCookiesMenuItem;
+ private MenuItem optionsDomStorageMenuItem;
+ private MenuItem optionsSaveFormDataMenuItem;
+ private MenuItem optionsClearDataMenuItem;
+ private MenuItem optionsClearCookiesMenuItem;
+ private MenuItem optionsClearDomStorageMenuItem;
+ private MenuItem optionsClearFormDataMenuItem;
+ private MenuItem optionsBlocklistsMenuItem;
+ private MenuItem optionsEasyListMenuItem;
+ private MenuItem optionsEasyPrivacyMenuItem;
+ private MenuItem optionsFanboysAnnoyanceListMenuItem;
+ private MenuItem optionsFanboysSocialBlockingListMenuItem;
+ private MenuItem optionsUltraListMenuItem;
+ private MenuItem optionsUltraPrivacyMenuItem;
+ private MenuItem optionsBlockAllThirdPartyRequestsMenuItem;
+ private MenuItem optionsProxyMenuItem;
+ private MenuItem optionsProxyNoneMenuItem;
+ private MenuItem optionsProxyTorMenuItem;
+ private MenuItem optionsProxyI2pMenuItem;
+ private MenuItem optionsProxyCustomMenuItem;
+ private MenuItem optionsUserAgentMenuItem;
+ private MenuItem optionsUserAgentPrivacyBrowserMenuItem;
+ private MenuItem optionsUserAgentWebViewDefaultMenuItem;
+ private MenuItem optionsUserAgentFirefoxOnAndroidMenuItem;
+ private MenuItem optionsUserAgentChromeOnAndroidMenuItem;
+ private MenuItem optionsUserAgentSafariOnIosMenuItem;
+ private MenuItem optionsUserAgentFirefoxOnLinuxMenuItem;
+ private MenuItem optionsUserAgentChromiumOnLinuxMenuItem;
+ private MenuItem optionsUserAgentFirefoxOnWindowsMenuItem;
+ private MenuItem optionsUserAgentChromeOnWindowsMenuItem;
+ private MenuItem optionsUserAgentEdgeOnWindowsMenuItem;
+ private MenuItem optionsUserAgentInternetExplorerOnWindowsMenuItem;
+ private MenuItem optionsUserAgentSafariOnMacosMenuItem;
+ private MenuItem optionsUserAgentCustomMenuItem;
+ private MenuItem optionsSwipeToRefreshMenuItem;
+ private MenuItem optionsWideViewportMenuItem;
+ private MenuItem optionsDisplayImagesMenuItem;
+ private MenuItem optionsDarkWebViewMenuItem;
+ private MenuItem optionsFontSizeMenuItem;
+ private MenuItem optionsAddOrEditDomainMenuItem;
+
+ // This variable won't be needed once the class is migrated to Kotlin, as can be seen in LogcatActivity or AboutVersionFragment.
+ private Activity resultLauncherActivityHandle;
+
+ // Define the save URL activity result launcher. It must be defined before `onCreate()` is run or the app will crash.
+ private final ActivityResultLauncher<String> saveUrlActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.CreateDocument("*/*"),
+ new ActivityResultCallback<Uri>() {
+ @Override
+ public void onActivityResult(Uri fileUri) {
+ // Only save the URL if the file URI is not null, which happens if the user exited the file picker by pressing back.
+ if (fileUri != null) {
+ // Instantiate the save URL coroutine.
+ SaveUrlCoroutine saveUrlCoroutine = new SaveUrlCoroutine();
+
+ // Save the URL.
+ saveUrlCoroutine.save(getApplicationContext(), resultLauncherActivityHandle, saveUrlString, fileUri, currentWebView.getSettings().getUserAgentString(),
+ currentWebView.getAcceptCookies());
+ }