X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2FMainWebViewActivity.java;h=2a2e14f0cbe684707adef078ee8b6731197ae0fd;hb=1bd5ba3b9f91e69517fa8a39665256f0badc408b;hp=a27dddb2cf11cd00dd3232d147e38709c321c860;hpb=9a1be859899abe1eb75637c1ea6b817afee723b1;p=PrivacyBrowserAndroid.git diff --git a/app/src/main/java/com/stoutner/privacybrowser/MainWebViewActivity.java b/app/src/main/java/com/stoutner/privacybrowser/MainWebViewActivity.java index a27dddb2..2a2e14f0 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/MainWebViewActivity.java +++ b/app/src/main/java/com/stoutner/privacybrowser/MainWebViewActivity.java @@ -49,6 +49,7 @@ import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; +import android.support.v7.app.AppCompatDialogFragment; import android.support.v7.widget.Toolbar; import android.util.Patterns; import android.view.KeyEvent; @@ -81,7 +82,7 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation SslCertificateError.SslCertificateErrorListener, DownloadFile.DownloadFileListener { // `appBar` is public static so it can be accessed from `OrbotProxyHelper`. - // It is also used in `onCreate()`. + // It is also used in `onCreate()` and `onOptionsItemSelected()`. public static ActionBar appBar; // `favoriteIcon` is public static so it can be accessed from `CreateHomeScreenShortcut`, `BookmarksActivity`, `CreateBookmark`, `CreateBookmarkFolder`, and `EditBookmark`. @@ -154,6 +155,8 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation // `sslErrorHandler` is used in `onCreate()`, `onSslErrorCancel()`, and `onSslErrorProceed`. private SslErrorHandler sslErrorHandler; + private MenuItem toggleJavaScript; + @Override // Remove Android Studio's warning about the dangers of using SetJavaScriptEnabled. The whole premise of Privacy Browser is built around an understanding of these dangers. @SuppressLint("SetJavaScriptEnabled") @@ -169,8 +172,8 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation // This is needed to get rid of the Android Studio warning that appBar might be null. assert appBar != null; - // Add the custom url_bar layout, which shows the favoriteIcon, urlTextBar, and progressBar. - appBar.setCustomView(R.layout.url_bar); + // Add the custom url_app_bar layout, which shows the favoriteIcon, urlTextBar, and progressBar. + appBar.setCustomView(R.layout.url_app_bar); appBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); // Set the "go" button on the keyboard to load the URL in urlTextBox. @@ -352,8 +355,8 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { // Show the `DownloadFile` `AlertDialog` and name this instance `@string/download`. - DialogFragment downloadFileDialogFragment = DownloadFile.fromUrl(url, contentDisposition, contentLength); - downloadFileDialogFragment.show(getFragmentManager(), getResources().getString(R.string.download)); + AppCompatDialogFragment downloadFileDialogFragment = DownloadFile.fromUrl(url, contentDisposition, contentLength); + downloadFileDialogFragment.show(getSupportFragmentManager(), getResources().getString(R.string.download)); } }); @@ -441,6 +444,7 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation updatePrivacyIcons(); // Get handles for the menu items. + toggleJavaScript = menu.findItem(R.id.toggleJavaScript); MenuItem toggleFirstPartyCookies = menu.findItem(R.id.toggleFirstPartyCookies); MenuItem toggleThirdPartyCookies = menu.findItem(R.id.toggleThirdPartyCookies); MenuItem toggleDomStorage = menu.findItem(R.id.toggleDomStorage); @@ -732,6 +736,12 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation mainWebView.getSettings().setTextZoom(200); return true; + case R.id.find_on_page: + appBar.setCustomView(R.layout.find_on_page_app_bar); + toggleJavaScript.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); + appBar.invalidateOptionsMenu(); + return true; + case R.id.share: Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); @@ -742,8 +752,8 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation case R.id.addToHomescreen: // Show the `CreateHomeScreenShortcut` `AlertDialog` and name this instance `@string/create_shortcut`. - DialogFragment createHomeScreenShortcutDialogFragment = new CreateHomeScreenShortcut(); - createHomeScreenShortcutDialogFragment.show(getFragmentManager(), getResources().getString(R.string.create_shortcut)); + AppCompatDialogFragment createHomeScreenShortcutDialogFragment = new CreateHomeScreenShortcut(); + createHomeScreenShortcutDialogFragment.show(getSupportFragmentManager(), getResources().getString(R.string.create_shortcut)); //Everything else will be handled by `CreateHomeScreenShortcut` and the associated listener below. return true; @@ -896,11 +906,11 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation adView = findViewById(R.id.adView); // `invalidateOptionsMenu` should recalculate the number of action buttons from the menu to display on the app bar, but it doesn't because of the this bug: https://code.google.com/p/android/issues/detail?id=20493#c8 - invalidateOptionsMenu(); + // invalidateOptionsMenu(); } @Override - public void onCreateHomeScreenShortcut(DialogFragment dialogFragment) { + public void onCreateHomeScreenShortcut(AppCompatDialogFragment dialogFragment) { // Get shortcutNameEditText from the alert dialog. EditText shortcutNameEditText = (EditText) dialogFragment.getDialog().findViewById(R.id.shortcut_name_edittext); @@ -919,7 +929,7 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation } @Override - public void onDownloadFile(DialogFragment dialogFragment, String downloadUrl) { + public void onDownloadFile(AppCompatDialogFragment dialogFragment, String downloadUrl) { DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); DownloadManager.Request downloadRequest = new DownloadManager.Request(Uri.parse(downloadUrl)); @@ -927,9 +937,12 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation EditText downloadFileNameEditText = (EditText) dialogFragment.getDialog().findViewById(R.id.download_file_name); String fileName = downloadFileNameEditText.getText().toString(); - // Set the download save in the the `DIRECTORY_DOWNLOADS`using `fileName`. // Once we have `WRITE_EXTERNAL_STORAGE` permissions we can use `setDestinationInExternalPublicDir`. - downloadRequest.setDestinationInExternalFilesDir(this, "/", fileName); + if (Build.VERSION.SDK_INT >= 23) { // If API >= 23, set the download save in the the `DIRECTORY_DOWNLOADS` using `fileName`. + downloadRequest.setDestinationInExternalFilesDir(this, "/", fileName); + } else { // Only set the title using `fileName`. + downloadRequest.setTitle(fileName); + } // Allow `MediaScanner` to index the download if it is a media file. downloadRequest.allowScanningByMediaScanner();