- // The block list versions are public static so they can be accessed from `AboutTabFragment`. They are also used in `onCreate()`.
- public static String easyListVersion;
- public static String easyPrivacyVersion;
- public static String fanboysAnnoyanceVersion;
- public static String fanboysSocialVersion;
- public static String ultraPrivacyVersion;
-
- // The request items are public static so they can be accessed by `BlockListHelper`, `RequestsArrayAdapter`, and `ViewRequestsDialog`. They are also used in `onCreate()` and `onPrepareOptionsMenu()`.
- public static List<String[]> resourceRequests;
- public static String[] whiteListResultStringArray;
- private int blockedRequests;
- private int easyListBlockedRequests;
- private int easyPrivacyBlockedRequests;
- private int fanboysAnnoyanceListBlockedRequests;
- private int fanboysSocialBlockingListBlockedRequests;
- private int ultraPrivacyBlockedRequests;
- private int thirdPartyBlockedRequests;
-
- public final static int REQUEST_DISPOSITION = 0;
- public final static int REQUEST_URL = 1;
- public final static int REQUEST_BLOCKLIST = 2;
- public final static int REQUEST_SUBLIST = 3;
- public final static int REQUEST_BLOCKLIST_ENTRIES = 4;
- public final static int REQUEST_BLOCKLIST_ORIGINAL_ENTRY = 5;
-
- public final static int REQUEST_DEFAULT = 0;
- public final static int REQUEST_ALLOWED = 1;
- public final static int REQUEST_THIRD_PARTY = 2;
- public final static int REQUEST_BLOCKED = 3;
-
- public final static int MAIN_WHITELIST = 1;
- public final static int FINAL_WHITELIST = 2;
- public final static int DOMAIN_WHITELIST = 3;
- public final static int DOMAIN_INITIAL_WHITELIST = 4;
- public final static int DOMAIN_FINAL_WHITELIST = 5;
- public final static int THIRD_PARTY_WHITELIST = 6;
- public final static int THIRD_PARTY_DOMAIN_WHITELIST = 7;
- public final static int THIRD_PARTY_DOMAIN_INITIAL_WHITELIST = 8;
-
- public final static int MAIN_BLACKLIST = 9;
- public final static int INITIAL_BLACKLIST = 10;
- public final static int FINAL_BLACKLIST = 11;
- public final static int DOMAIN_BLACKLIST = 12;
- public final static int DOMAIN_INITIAL_BLACKLIST = 13;
- public final static int DOMAIN_FINAL_BLACKLIST = 14;
- public final static int DOMAIN_REGULAR_EXPRESSION_BLACKLIST = 15;
- public final static int THIRD_PARTY_BLACKLIST = 16;
- public final static int THIRD_PARTY_INITIAL_BLACKLIST = 17;
- public final static int THIRD_PARTY_DOMAIN_BLACKLIST = 18;
- public final static int THIRD_PARTY_DOMAIN_INITIAL_BLACKLIST = 19;
- public final static int THIRD_PARTY_REGULAR_EXPRESSION_BLACKLIST = 20;
- public final static int THIRD_PARTY_DOMAIN_REGULAR_EXPRESSION_BLACKLIST = 21;
- public final static int REGULAR_EXPRESSION_BLACKLIST = 22;
-
- // `blockAllThirdPartyRequests` is public static so it can be accessed from `RequestsActivity`.
- // It is also used in `onCreate()`, `onPrepareOptionsMenu()`, `onOptionsItemSelected()`, and `applyAppSettings()`
- public static boolean blockAllThirdPartyRequests;
-
- // `currentBookmarksFolder` is public static so it can be accessed from `BookmarksActivity`. It is also used in `onCreate()`, `onBackPressed()`, `onCreateBookmark()`, `onCreateBookmarkFolder()`,
- // `onSaveEditBookmark()`, `onSaveEditBookmarkFolder()`, and `loadBookmarksFolder()`.
- public static String currentBookmarksFolder;
-
- // `domainSettingsDatabaseId` is public static so it can be accessed from `PinnedMismatchDialog`. It is also used in `onCreate()`, `onOptionsItemSelected()`, and `applyDomainSettings()`.
- public static int domainSettingsDatabaseId;
-
- // The pinned variables are public static so they can be accessed from `PinnedMismatchDialog`. They are also used in `onCreate()`, `applyDomainSettings()`, and `checkPinnedMismatch()`.
- public static String pinnedSslIssuedToCName;
- public static String pinnedSslIssuedToOName;
- public static String pinnedSslIssuedToUName;
- public static String pinnedSslIssuedByCName;
- public static String pinnedSslIssuedByOName;
- public static String pinnedSslIssuedByUName;
- public static Date pinnedSslStartDate;
- public static Date pinnedSslEndDate;
- public static String pinnedHostIpAddresses;
+ // 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) {
+ new SaveUrl(getApplicationContext(), resultLauncherActivityHandle, fileUri, currentWebView.getSettings().getUserAgentString(), currentWebView.getAcceptCookies()).execute(saveUrlString);
+ }