rename "Tracking" to "Analytics"

This commit is contained in:
Vincent Breitmoser
2018-07-16 13:42:03 +02:00
parent 10466101c0
commit fef79c7f73
9 changed files with 46 additions and 45 deletions

View File

@@ -26,11 +26,11 @@ import android.accounts.AccountManager;
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.os.Handler;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.widget.Toast; import android.widget.Toast;
import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.sufficientlysecure.keychain.analytics.AnalyticsManager;
import org.sufficientlysecure.keychain.network.TlsCertificatePinning; import org.sufficientlysecure.keychain.network.TlsCertificatePinning;
import org.sufficientlysecure.keychain.provider.TemporaryFileProvider; import org.sufficientlysecure.keychain.provider.TemporaryFileProvider;
import org.sufficientlysecure.keychain.service.ContactSyncAdapterService; import org.sufficientlysecure.keychain.service.ContactSyncAdapterService;
@@ -42,7 +42,7 @@ import timber.log.Timber.DebugTree;
public class KeychainApplication extends Application { public class KeychainApplication extends Application {
TrackingManager trackingManager; AnalyticsManager analyticsManager;
/** /**
* Called when the application is starting, before any activity, service, or receiver objects * Called when the application is starting, before any activity, service, or receiver objects
@@ -108,8 +108,8 @@ public class KeychainApplication extends Application {
TemporaryFileProvider.scheduleCleanupImmediately(); TemporaryFileProvider.scheduleCleanupImmediately();
trackingManager = TrackingManager.getInstance(getApplicationContext()); analyticsManager = AnalyticsManager.getInstance(getApplicationContext());
trackingManager.initialize(this); analyticsManager.initialize(this);
} }
/** /**
@@ -158,7 +158,7 @@ public class KeychainApplication extends Application {
} }
} }
public TrackingManager getTrackingManager() { public AnalyticsManager getAnalyticsManager() {
return trackingManager; return analyticsManager;
} }
} }

View File

@@ -1,4 +1,4 @@
package org.sufficientlysecure.keychain; package org.sufficientlysecure.keychain.analytics;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -6,11 +6,14 @@ import java.util.concurrent.TimeUnit;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.AlertDialog.Builder; import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageManager.NameNotFoundException;
import android.preference.PreferenceActivity; import android.preference.PreferenceActivity;
import org.sufficientlysecure.keychain.BuildConfig;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.KeychainApplication;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.ui.SettingsActivity; import org.sufficientlysecure.keychain.ui.SettingsActivity;
import org.sufficientlysecure.keychain.ui.SettingsActivity.ExperimentalPrefsFragment; import org.sufficientlysecure.keychain.ui.SettingsActivity.ExperimentalPrefsFragment;
import org.sufficientlysecure.keychain.ui.util.Notify; import org.sufficientlysecure.keychain.ui.util.Notify;
@@ -18,14 +21,14 @@ import org.sufficientlysecure.keychain.ui.util.Notify.Style;
import org.sufficientlysecure.keychain.util.Preferences; import org.sufficientlysecure.keychain.util.Preferences;
public class TrackingConsentRequester { public class AnalyticsConsentRequester {
private final Activity activity; private final Activity activity;
public static TrackingConsentRequester getInstance(Activity activity) { public static AnalyticsConsentRequester getInstance(Activity activity) {
return new TrackingConsentRequester(activity); return new AnalyticsConsentRequester(activity);
} }
private TrackingConsentRequester(Activity activity) { private AnalyticsConsentRequester(Activity activity) {
this.activity = activity; this.activity = activity;
} }
@@ -61,20 +64,20 @@ public class TrackingConsentRequester {
preferences.setAnalyticsLastAskedNow(); preferences.setAnalyticsLastAskedNow();
TrackingManager trackingManager = ((KeychainApplication) activity.getApplication()).getTrackingManager(); AnalyticsManager analyticsManager = ((KeychainApplication) activity.getApplication()).getAnalyticsManager();
AlertDialog show = new Builder(activity) AlertDialog show = new Builder(activity)
.setMessage(R.string.dialog_analytics_text) .setMessage(R.string.dialog_analytics_text)
.setPositiveButton(R.string.button_analytics_yes, (dialog, which) -> { .setPositiveButton(R.string.button_analytics_yes, (dialog, which) -> {
preferences.setAnalyticsAskedPolitely(); preferences.setAnalyticsAskedPolitely();
preferences.setAnalyticsGotUserConsent(true); preferences.setAnalyticsGotUserConsent(true);
trackingManager.refreshSettings(activity); analyticsManager.refreshSettings(activity);
Notify.create(activity, R.string.snack_analytics_accept, Style.OK, Notify.create(activity, R.string.snack_analytics_accept, Style.OK,
this::startExperimentalSettingsActivity, R.string.snackbutton_analytics_settings).show(); this::startExperimentalSettingsActivity, R.string.snackbutton_analytics_settings).show();
}) })
.setNegativeButton(R.string.button_analytics_no, (dialog, which) -> { .setNegativeButton(R.string.button_analytics_no, (dialog, which) -> {
preferences.setAnalyticsAskedPolitely(); preferences.setAnalyticsAskedPolitely();
preferences.setAnalyticsGotUserConsent(false); preferences.setAnalyticsGotUserConsent(false);
trackingManager.refreshSettings(activity); analyticsManager.refreshSettings(activity);
Notify.create(activity, R.string.snack_analytics_reject, Style.OK, Notify.create(activity, R.string.snack_analytics_reject, Style.OK,
this::startExperimentalSettingsActivity, R.string.snackbutton_analytics_settings).show(); this::startExperimentalSettingsActivity, R.string.snackbutton_analytics_settings).show();
}) })

View File

@@ -1,4 +1,4 @@
package org.sufficientlysecure.keychain; package org.sufficientlysecure.keychain.analytics;
import android.app.Activity; import android.app.Activity;
@@ -15,14 +15,14 @@ import org.piwik.sdk.extra.TrackHelper;
import org.sufficientlysecure.keychain.util.Preferences; import org.sufficientlysecure.keychain.util.Preferences;
public class TrackingManager { public class AnalyticsManager {
private Tracker piwikTracker; private Tracker piwikTracker;
public static TrackingManager getInstance(Context context) { public static AnalyticsManager getInstance(Context context) {
return new TrackingManager(context); return new AnalyticsManager(context);
} }
private TrackingManager(Context context) { private AnalyticsManager(Context context) {
refreshSettings(context); refreshSettings(context);
} }

View File

@@ -54,7 +54,7 @@ import org.openintents.openpgp.util.OpenPgpApi;
import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.model.SubKey.UnifiedKeyInfo; import org.sufficientlysecure.keychain.model.SubKey.UnifiedKeyInfo;
import org.sufficientlysecure.keychain.KeychainApplication; import org.sufficientlysecure.keychain.KeychainApplication;
import org.sufficientlysecure.keychain.TrackingManager; import org.sufficientlysecure.keychain.analytics.AnalyticsManager;
import org.sufficientlysecure.keychain.operations.BackupOperation; import org.sufficientlysecure.keychain.operations.BackupOperation;
import org.sufficientlysecure.keychain.operations.results.DecryptVerifyResult; import org.sufficientlysecure.keychain.operations.results.DecryptVerifyResult;
import org.sufficientlysecure.keychain.operations.results.ExportResult; import org.sufficientlysecure.keychain.operations.results.ExportResult;
@@ -101,7 +101,7 @@ public class OpenPgpService extends Service {
private ApiAppDao mApiAppDao; private ApiAppDao mApiAppDao;
private OpenPgpServiceKeyIdExtractor mKeyIdExtractor; private OpenPgpServiceKeyIdExtractor mKeyIdExtractor;
private ApiPendingIntentFactory mApiPendingIntentFactory; private ApiPendingIntentFactory mApiPendingIntentFactory;
private TrackingManager trackingManager; private AnalyticsManager analyticsManager;
@Override @Override
public void onCreate() { public void onCreate() {
@@ -112,7 +112,7 @@ public class OpenPgpService extends Service {
mApiPendingIntentFactory = new ApiPendingIntentFactory(getBaseContext()); mApiPendingIntentFactory = new ApiPendingIntentFactory(getBaseContext());
mKeyIdExtractor = OpenPgpServiceKeyIdExtractor.getInstance(getContentResolver(), mApiPendingIntentFactory); mKeyIdExtractor = OpenPgpServiceKeyIdExtractor.getInstance(getContentResolver(), mApiPendingIntentFactory);
trackingManager = ((KeychainApplication) getApplication()).getTrackingManager(); analyticsManager = ((KeychainApplication) getApplication()).getAnalyticsManager();
} }
private Intent signImpl(Intent data, InputStream inputStream, private Intent signImpl(Intent data, InputStream inputStream,
@@ -1030,7 +1030,7 @@ public class OpenPgpService extends Service {
return errorResult; return errorResult;
} }
trackingManager.trackApiServiceCall(data.getAction(), mApiPermissionHelper.getCurrentCallingPackage()); analyticsManager.trackApiServiceCall(data.getAction(), mApiPermissionHelper.getCurrentCallingPackage());
Progressable progressable = null; Progressable progressable = null;
if (data.hasExtra(OpenPgpApi.EXTRA_PROGRESS_MESSENGER)) { if (data.hasExtra(OpenPgpApi.EXTRA_PROGRESS_MESSENGER)) {

View File

@@ -28,7 +28,7 @@ import android.os.Parcelable;
import android.support.v4.os.CancellationSignal; import android.support.v4.os.CancellationSignal;
import org.sufficientlysecure.keychain.KeychainApplication; import org.sufficientlysecure.keychain.KeychainApplication;
import org.sufficientlysecure.keychain.TrackingManager; import org.sufficientlysecure.keychain.analytics.AnalyticsManager;
import org.sufficientlysecure.keychain.daos.KeyWritableRepository; import org.sufficientlysecure.keychain.daos.KeyWritableRepository;
import org.sufficientlysecure.keychain.operations.BackupOperation; import org.sufficientlysecure.keychain.operations.BackupOperation;
import org.sufficientlysecure.keychain.operations.BaseOperation; import org.sufficientlysecure.keychain.operations.BaseOperation;
@@ -55,19 +55,20 @@ import org.sufficientlysecure.keychain.service.input.CryptoInputParcel;
public class KeychainServiceTask { public class KeychainServiceTask {
private final TrackingManager trackingManager; private final AnalyticsManager analyticsManager;
public static KeychainServiceTask create(Activity activity) { public static KeychainServiceTask create(Activity activity) {
Context context = activity.getApplicationContext(); Context context = activity.getApplicationContext();
TrackingManager trackingManager = ((KeychainApplication) activity.getApplication()).getTrackingManager(); KeyWritableRepository keyRepository = KeyWritableRepository.create(context);
AnalyticsManager analyticsManager = ((KeychainApplication) activity.getApplication()).getAnalyticsManager();
return new KeychainServiceTask(context, KeyWritableRepository.create(context), trackingManager); return new KeychainServiceTask(context, keyRepository, analyticsManager);
} }
private KeychainServiceTask(Context context, KeyWritableRepository keyRepository, TrackingManager trackingManager) { private KeychainServiceTask(Context context, KeyWritableRepository keyRepository, AnalyticsManager analyticsManager) {
this.context = context; this.context = context;
this.keyRepository = keyRepository; this.keyRepository = keyRepository;
this.trackingManager = trackingManager; this.analyticsManager = analyticsManager;
} }
private final Context context; private final Context context;
@@ -130,7 +131,7 @@ public class KeychainServiceTask {
return null; return null;
} }
trackingManager.trackInternalServiceCall(op.getClass().getSimpleName()); analyticsManager.trackInternalServiceCall(op.getClass().getSimpleName());
// noinspection unchecked, we make sure it's the correct op above // noinspection unchecked, we make sure it's the correct op above
return op.execute(inputParcel, cryptoInput); return op.execute(inputParcel, cryptoInput);

View File

@@ -54,7 +54,7 @@ import eu.davidea.flexibleadapter.SelectableAdapter.Mode;
import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.KeychainDatabase; import org.sufficientlysecure.keychain.KeychainDatabase;
import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.TrackingConsentRequester; import org.sufficientlysecure.keychain.analytics.AnalyticsConsentRequester;
import org.sufficientlysecure.keychain.compatibility.ClipboardReflection; import org.sufficientlysecure.keychain.compatibility.ClipboardReflection;
import org.sufficientlysecure.keychain.daos.DatabaseNotifyManager; import org.sufficientlysecure.keychain.daos.DatabaseNotifyManager;
import org.sufficientlysecure.keychain.daos.KeyRepository; import org.sufficientlysecure.keychain.daos.KeyRepository;
@@ -261,7 +261,7 @@ public class KeyListFragment extends RecyclerFragment<FlexibleAdapter<FlexibleKe
LiveData<List<FlexibleKeyItem>> liveData = viewModel.getGenericLiveData(requireContext(), this::loadFlexibleKeyItems); LiveData<List<FlexibleKeyItem>> liveData = viewModel.getGenericLiveData(requireContext(), this::loadFlexibleKeyItems);
liveData.observe(this, this::onLoadKeyItems); liveData.observe(this, this::onLoadKeyItems);
TrackingConsentRequester.getInstance(activity).maybeAskForAnalytics(); AnalyticsConsentRequester.getInstance(activity).maybeAskForAnalytics();
} }
@WorkerThread @WorkerThread

View File

@@ -23,7 +23,6 @@ import android.os.Build.VERSION_CODES;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentManager.OnBackStackChangedListener;
import android.support.v4.app.FragmentTransaction; import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.view.View; import android.view.View;
@@ -39,7 +38,7 @@ import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
import org.sufficientlysecure.keychain.KeychainApplication; import org.sufficientlysecure.keychain.KeychainApplication;
import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.TrackingManager; import org.sufficientlysecure.keychain.analytics.AnalyticsManager;
import org.sufficientlysecure.keychain.operations.results.OperationResult; import org.sufficientlysecure.keychain.operations.results.OperationResult;
import org.sufficientlysecure.keychain.remote.ui.AppsListFragment; import org.sufficientlysecure.keychain.remote.ui.AppsListFragment;
import org.sufficientlysecure.keychain.ui.base.BaseSecurityTokenActivity; import org.sufficientlysecure.keychain.ui.base.BaseSecurityTokenActivity;
@@ -64,7 +63,7 @@ public class MainActivity extends BaseSecurityTokenActivity implements FabContai
public Drawer mDrawer; public Drawer mDrawer;
private Toolbar mToolbar; private Toolbar mToolbar;
private TrackingManager trackingManager; private AnalyticsManager analyticsManager;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@@ -75,7 +74,7 @@ public class MainActivity extends BaseSecurityTokenActivity implements FabContai
mToolbar.setTitle(R.string.app_name); mToolbar.setTitle(R.string.app_name);
setSupportActionBar(mToolbar); setSupportActionBar(mToolbar);
trackingManager = ((KeychainApplication) getApplication()).getTrackingManager(); analyticsManager = ((KeychainApplication) getApplication()).getAnalyticsManager();
mDrawer = new DrawerBuilder() mDrawer = new DrawerBuilder()
.withActivity(this) .withActivity(this)
@@ -205,7 +204,7 @@ public class MainActivity extends BaseSecurityTokenActivity implements FabContai
private void setFragment(Fragment frag) { private void setFragment(Fragment frag) {
FragmentManager fragmentManager = getSupportFragmentManager(); FragmentManager fragmentManager = getSupportFragmentManager();
trackingManager.trackFragmentImpression(getClass().getSimpleName(), frag.getClass().getSimpleName()); analyticsManager.trackFragmentImpression(getClass().getSimpleName(), frag.getClass().getSimpleName());
FragmentTransaction ft = fragmentManager.beginTransaction(); FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.main_fragment_container, frag); ft.replace(R.id.main_fragment_container, frag);

View File

@@ -37,7 +37,6 @@ import android.os.Bundle;
import android.preference.EditTextPreference; import android.preference.EditTextPreference;
import android.preference.ListPreference; import android.preference.ListPreference;
import android.preference.Preference; import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceFragment; import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
import android.preference.SwitchPreference; import android.preference.SwitchPreference;
@@ -51,7 +50,6 @@ import android.view.ViewGroup;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.Constants.Pref;
import org.sufficientlysecure.keychain.KeychainApplication; import org.sufficientlysecure.keychain.KeychainApplication;
import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.compatibility.AppCompatPreferenceActivity; import org.sufficientlysecure.keychain.compatibility.AppCompatPreferenceActivity;
@@ -591,7 +589,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
super.onPause(); super.onPause();
Activity activity = getActivity(); Activity activity = getActivity();
((KeychainApplication) activity.getApplication()).getTrackingManager().refreshSettings(activity); ((KeychainApplication) activity.getApplication()).getAnalyticsManager().refreshSettings(activity);
} }
@Override @Override

View File

@@ -48,7 +48,7 @@ import org.sufficientlysecure.keychain.livedata.GenericLiveData;
import org.sufficientlysecure.keychain.model.SubKey; import org.sufficientlysecure.keychain.model.SubKey;
import org.sufficientlysecure.keychain.model.SubKey.UnifiedKeyInfo; import org.sufficientlysecure.keychain.model.SubKey.UnifiedKeyInfo;
import org.sufficientlysecure.keychain.model.UserPacket.UserId; import org.sufficientlysecure.keychain.model.UserPacket.UserId;
import org.sufficientlysecure.keychain.TrackingManager; import org.sufficientlysecure.keychain.analytics.AnalyticsManager;
import org.sufficientlysecure.keychain.operations.results.OperationResult; import org.sufficientlysecure.keychain.operations.results.OperationResult;
import org.sufficientlysecure.keychain.daos.KeyRepository; import org.sufficientlysecure.keychain.daos.KeyRepository;
import org.sufficientlysecure.keychain.ui.adapter.PagerTabStripAdapter; import org.sufficientlysecure.keychain.ui.adapter.PagerTabStripAdapter;
@@ -89,7 +89,7 @@ public class ViewKeyAdvActivity extends BaseActivity implements OnPageChangeList
} }
} }
private TrackingManager trackingManager; private AnalyticsManager analyticsManager;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@@ -98,7 +98,7 @@ public class ViewKeyAdvActivity extends BaseActivity implements OnPageChangeList
setFullScreenDialogClose(v -> finish()); setFullScreenDialogClose(v -> finish());
keyRepository = KeyRepository.create(this); keyRepository = KeyRepository.create(this);
trackingManager = ((KeychainApplication) getApplication()).getTrackingManager(); analyticsManager = ((KeychainApplication) getApplication()).getAnalyticsManager();
viewPager = findViewById(R.id.pager); viewPager = findViewById(R.id.pager);
slidingTabLayout = findViewById(R.id.sliding_tab_layout); slidingTabLayout = findViewById(R.id.sliding_tab_layout);
@@ -302,7 +302,7 @@ public class ViewKeyAdvActivity extends BaseActivity implements OnPageChangeList
invalidateOptionsMenu(); invalidateOptionsMenu();
String fragmentName = tabAdapter.getItem(position).getClass().getSimpleName(); String fragmentName = tabAdapter.getItem(position).getClass().getSimpleName();
trackingManager.trackFragmentImpression(getClass().getSimpleName(), fragmentName); analyticsManager.trackFragmentImpression(getClass().getSimpleName(), fragmentName);
} }
@Override @Override