Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: adblockplussbrowser/src/main/java/org/adblockplus/sbrowser/contentblocker/MainPreferences.java

Issue 29603697: Issue 5931 - Create tests for util package (Closed)
Patch Set: Created Nov. 10, 2017, 2:23 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: adblockplussbrowser/src/main/java/org/adblockplus/sbrowser/contentblocker/MainPreferences.java
===================================================================
new file mode 100644
--- /dev/null
+++ b/adblockplussbrowser/src/main/java/org/adblockplus/sbrowser/contentblocker/MainPreferences.java
@@ -0,0 +1,240 @@
+/*
+ * This file is part of Adblock Plus <https://adblockplus.org/>,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * Adblock Plus is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * Adblock Plus is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package org.adblockplus.sbrowser.contentblocker;
+
+import org.adblockplus.sbrowser.contentblocker.engine.Engine;
+import org.adblockplus.sbrowser.contentblocker.engine.EngineService;
+import org.adblockplus.adblockplussbrowser.R;
+import org.adblockplus.sbrowser.contentblocker.util.SharedPrefsUtils;
+
+import android.app.AlertDialog;
+import android.app.ProgressDialog;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceManager;
+import android.text.Html;
+import android.util.Log;
+import android.view.Gravity;
+import android.widget.Button;
+import android.widget.LinearLayout;
+
+public class MainPreferences extends PreferenceActivity implements
+ EngineService.OnEngineCreatedCallback, SharedPrefsUtils.OnSharedPreferenceChangeListener,
+ Engine.SubscriptionUpdateCallback
+{
+ private static final String TAG = MainPreferences.class.getSimpleName();
+ private Engine engine = null;
+ private AlertDialog dialog;
+ private int dialogTitleResId;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ PreferenceManager.setDefaultValues(this, R.xml.preferences_main, false);
+
+ this.getFragmentManager()
+ .beginTransaction()
+ .replace(android.R.id.content, new Preferences())
+ .commit();
+ }
+
+ @Override
+ protected void onStart()
+ {
+ this.dialogTitleResId = R.string.initialization_title;
+ this.dialog = ProgressDialog.show(this,
+ this.getString(this.dialogTitleResId),
+ this.getString(R.string.initialization_message));
+ super.onStart();
+ SharedPrefsUtils.registerOnSharedPreferenceChangeListener(this, this);
+ EngineService.startService(this.getApplicationContext(), this);
+ }
+
+ @Override
+ protected void onStop()
+ {
+ super.onStop();
+ SharedPrefsUtils.unregisterOnSharedPreferenceChangeListener(this, this);
+ this.dismissDialog();
+ }
+
+ private void dismissDialog()
+ {
+ if (this.dialog != null)
+ {
+ this.dialogTitleResId = 0;
+ this.dialog.dismiss();
+ this.dialog = null;
+ }
+ }
+
+ private void checkForCompatibleSBrowserAndProceed()
+ {
+ if (!Engine.hasCompatibleSBrowserInstalled(this.getApplicationContext()))
+ {
+ this.dialogTitleResId = R.string.sbrowser_dialog_title;
+ this.dialog = new AlertDialog.Builder(this)
+ .setCancelable(false)
+ .setTitle(this.dialogTitleResId)
+ .setMessage(Html.fromHtml(getString(R.string.sbrowser_dialog_message)))
+ .setNeutralButton(R.string.sbrowser_dialog_button, new OnClickListener()
+ {
+ @Override
+ public void onClick(DialogInterface dialog, int which)
+ {
+ try
+ {
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="
+ + Engine.SBROWSER_APP_ID)));
+ }
+ catch (final Throwable t)
+ {
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri
+ .parse("https://play.google.com/store/apps/details?id=" + Engine.SBROWSER_APP_ID)));
+ }
+ }
+ }).create();
+ this.dialog.show();
+ }
+ else
+ {
+ this.checkAAStatusAndProceed();
+ }
+ }
+
+ private void checkAAStatusAndProceed()
+ {
+ final boolean aaInfoShown = SharedPrefsUtils.getBoolean(this, R.string.key_aa_info_shown, false);
+ if (!aaInfoShown)
+ {
+ this.dialogTitleResId = R.string.aa_dialog_title;
+ this.dialog = new AlertDialog.Builder(this)
+ .setCancelable(false)
+ .setTitle(this.dialogTitleResId)
+ .setMessage(Html.fromHtml(getString(R.string.aa_dialog_message)))
+ .setNeutralButton(R.string.aa_dialog_button, new OnClickListener()
+ {
+ @Override
+ public void onClick(DialogInterface dialog, int which)
+ {
+ SharedPrefsUtils.putBoolean(MainPreferences.this, R.string.key_aa_info_shown, true);
+ MainPreferences.this.checkSetupStatus();
+ }
+ }).create();
+ this.dialog.show();
+ }
+ else
+ {
+ this.checkSetupStatus();
+ }
+ }
+
+ private void checkSetupStatus()
+ {
+ final boolean applicationActivated = SharedPrefsUtils.getBoolean(
+ this, R.string.key_application_activated, false);
+
+ if (!applicationActivated)
+ {
+ Log.d(TAG, "Showing setup dialog");
+ this.dialogTitleResId = R.string.setup_dialog_title;
+ this.dialog = new AlertDialog.Builder(this)
+ .setCancelable(false)
+ .setTitle(this.dialogTitleResId)
+ .setMessage(Html.fromHtml(getString(Engine.hasSamsungInternetVersion5OrNewer(MainPreferences.this) ?
+ R.string.setup_dialog_message_sbrowser_5 : R.string.setup_dialog_message_sbrowser_4)))
+ .setNeutralButton(R.string.setup_dialog_button, new OnClickListener()
+ {
+ @Override
+ public void onClick(DialogInterface dialog, int which)
+ {
+ Engine.openSBrowserSettings(MainPreferences.this);
+ }
+ })
+ .create();
+ this.dialog.show();
+
+ final Button btNeutral = this.dialog.getButton(AlertDialog.BUTTON_NEUTRAL);
+ final LinearLayout.LayoutParams btNeutralLayoutParams = (LinearLayout.LayoutParams) btNeutral.getLayoutParams();
+ btNeutralLayoutParams.width = LinearLayout.LayoutParams.MATCH_PARENT;
+ btNeutralLayoutParams.gravity = Gravity.CENTER;
+ btNeutral.setLayoutParams(btNeutralLayoutParams);
+ }
+ }
+
+ @Override
+ public void onEngineCreated(Engine engine, boolean success)
+ {
+ Log.d(TAG, "onEngineCreated: " + success);
+ this.engine = success ? engine : null;
+
+ if (engine != null)
+ {
+ this.engine.setSubscriptionUpdateCallback(this);
+ }
+
+ if (this.dialogTitleResId == R.string.initialization_title)
+ {
+ this.dismissDialog();
+
+ this.checkForCompatibleSBrowserAndProceed();
+ }
+ }
+
+ @Override
+ public void onSharedPreferenceChanged(String key)
+ {
+ if (this.getString(R.string.key_automatic_updates).equals(key) && this.engine != null)
+ {
+ this.engine.connectivityChanged();
+ }
+ else if (this.getString(R.string.key_acceptable_ads).equals(key))
+ {
+ final boolean enabled = SharedPrefsUtils.getBoolean(this, R.string.key_acceptable_ads, true);
+ final String id = "url:" + this.engine.getPrefsDefault(Engine.SUBSCRIPTIONS_EXCEPTIONSURL);
+ Log.d(TAG, "Acceptable ads " + (enabled ? "enabled" : "disabled"));
+ this.engine.changeSubscriptionState(id, enabled);
+ }
+ else if (this.getString(R.string.key_application_activated).equals(key))
+ {
+ if (this.dialogTitleResId == R.string.setup_dialog_title)
+ {
+ this.dismissDialog();
+ }
+ }
+ }
+
+ @Override
+ public void subscriptionUpdateRequested(final boolean enabled)
+ {
+ this.dialog = ProgressDialog.show(this, null, enabled
+ ? getString(R.string.add_subscription_dialog_message)
+ : getString(R.string.remove_subscription_dialog_message));
+ }
+
+ @Override
+ public void subscriptionUpdatedApplied()
+ {
+ this.dismissDialog();
+ }
+}

Powered by Google App Engine
This is Rietveld