Compare commits

..

2 Commits

159 changed files with 341 additions and 966 deletions
+1 -2
View File
@@ -244,8 +244,7 @@ $ANDROID_NDK_ROOT/ndk-stack --sym obj/local/armeabi-v7a --dump crash.txt > decod
Replace `armeabi-v7a` by the correct architecture the logs come from (can be guessed by trial and error)
### Deobfuscating Java Stack Traces
### Deobfuscating Java/Kotlin Stack Traces
Because the app uses code minification (ProGuard/R8), Java stack traces in crash reports are obfuscated.
To decode them, use `retrace` with the `mapping.txt` file that is included in the symbols zip:
-2
View File
@@ -5,10 +5,8 @@
* Better incoming call system integration
* Calls are not experimental anymore and don't need to be manually enabled
* Display a permanent notification when doing location streaming and get rid of dangerous "Access Location in Background" permission
* Allow to share location for 24 hours
* Allow mini-apps to play audio without user interaction
* Mark chats as unread (long tap a chat and select the corresponding option from the three-dot-menu)
* Fix process of upgrading from a very old version of the app
## v2.49.0
2026-04
@@ -39,7 +39,7 @@ public class EnterChatsBenchmark {
// PLEASE BACKUP YOUR ACCOUNT BEFORE RUNNING THIS!
// ==============================================================================================
private static final String TAG = "EnterChatsBenchmark";
private static final String TAG = EnterChatsBenchmark.class.getSimpleName();
@Rule
public ActivityScenarioRule<ConversationListActivity> activityRule =
@@ -6,7 +6,7 @@ import android.util.Log;
/** Non-GMS, always uses the platform LocationManager. */
public final class LocationSourceFactory {
private static final String TAG = "LocationSourceFactory";
private static final String TAG = LocationSourceFactory.class.getSimpleName();
private LocationSourceFactory() {}
@@ -14,7 +14,7 @@ import com.google.android.gms.location.Priority;
public class GmsLocationSource implements LocationSource {
private static final String TAG = "GmsLocationSource";
private static final String TAG = GmsLocationSource.class.getSimpleName();
private static final long UPDATE_INTERVAL_MS = 3_000;
private static final long FASTEST_INTERVAL_MS = 1_000;
@@ -11,7 +11,7 @@ import com.google.android.gms.common.GoogleApiAvailability;
*/
public final class LocationSourceFactory {
private static final String TAG = "LocationSourceFactory";
private static final String TAG = LocationSourceFactory.class.getSimpleName();
private LocationSourceFactory() {}
@@ -17,7 +17,7 @@ import org.thoughtcrime.securesms.service.FetchForegroundService;
import org.thoughtcrime.securesms.util.Util;
public class FcmReceiveService extends FirebaseMessagingService {
private static final String TAG = "FcmReceiveService";
private static final String TAG = FcmReceiveService.class.getSimpleName();
private static final Object INIT_LOCK = new Object();
private static boolean initialized;
private static volatile boolean triedRegistering;
+1 -2
View File
@@ -71,7 +71,6 @@
android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" />
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS" />
@@ -491,7 +490,7 @@
android:name=".calls.CallService"
android:enabled="true"
android:exported="false"
android:foregroundServiceType="camera|microphone|phoneCall" />
android:foregroundServiceType="camera|microphone" />
<receiver
android:name=".notifications.MarkReadReceiver"
@@ -59,6 +59,8 @@ public class DcMsg {
public static final int DC_VIDEOCHATTYPE_UNKNOWN = 0;
public static final int DC_VIDEOCHATTYPE_BASICWEBRTC = 1;
private static final String TAG = DcMsg.class.getSimpleName();
public DcMsg(DcContext context, int viewtype) {
msgCPtr = context.createMsgCPtr(viewtype);
}
@@ -35,7 +35,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
public class AllMediaActivity extends PassphraseRequiredActionBarActivity
implements DcEventCenter.DcEventDelegate {
private static final String TAG = "AllMediaActivity";
private static final String TAG = AllMediaActivity.class.getSimpleName();
public static final String CHAT_ID_EXTRA = "chat_id";
public static final String CONTACT_ID_EXTRA = "contact_id";
@@ -52,7 +52,7 @@ import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.webxdc.WebxdcGarbageCollectionWorker;
public class ApplicationContext extends MultiDexApplication {
private static final String TAG = "ApplicationContext";
private static final String TAG = ApplicationContext.class.getSimpleName();
private static final Object initLock = new Object();
private static volatile boolean isInitialized = false;
@@ -218,7 +218,7 @@ public class ApplicationContext extends MultiDexApplication {
Log.i(TAG, "DcAccounts created");
rpc = new Rpc(new FFITransport(dcAccounts.getJsonrpcInstance()));
Log.i(TAG, "Rpc created");
AccountManager.getInstance().migrateToDcAccounts(this, dcAccounts);
AccountManager.getInstance().migrateToDcAccounts(this);
int[] allAccounts = dcAccounts.getAll();
Log.i(TAG, "Number of profiles: " + allAccounts.length);
@@ -20,7 +20,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
public abstract class BaseActionBarActivity extends AppCompatActivity {
private static final String TAG = "BaseActionBarActivity";
private static final String TAG = BaseActionBarActivity.class.getSimpleName();
protected DynamicTheme dynamicTheme = new DynamicTheme();
protected void onPreCreate() {
@@ -47,7 +47,7 @@ import org.thoughtcrime.securesms.util.task.SnackbarAsyncTask;
import org.thoughtcrime.securesms.util.views.ProgressDialog;
public abstract class BaseConversationListFragment extends Fragment implements ActionMode.Callback {
private static final String TAG = "BaseConversationListFragment";
private static final String TAG = BaseConversationListFragment.class.getSimpleName();
protected ActionMode actionMode;
protected PulsingFloatingActionButton fab;
@@ -122,6 +122,9 @@ public abstract class BaseConversationListFragment extends Fragment implements A
Context context = getContext();
if (context != null) {
if (SendRelayedMessageUtil.containsVideoType(context, uris)) {
message += "\n\n" + getString(R.string.videos_sent_without_recoding);
}
new AlertDialog.Builder(context)
.setMessage(message)
.setCancelable(false)
@@ -129,16 +132,11 @@ public abstract class BaseConversationListFragment extends Fragment implements A
.setPositiveButton(
R.string.menu_send,
(dialog, which) -> {
Activity activity = getActivity();
if (activity == null) {
return;
}
SendRelayedMessageUtil.immediatelyRelay(
activity,
selectedChats.toArray(new Long[selectedChats.size()]),
() -> activity.finish());
getActivity(), selectedChats.toArray(new Long[selectedChats.size()]));
actionMode.finish();
actionMode = null;
getActivity().finish();
})
.show();
}
@@ -29,7 +29,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
*/
public abstract class ContactSelectionActivity extends PassphraseRequiredActionBarActivity
implements ContactSelectionListFragment.OnContactSelectedListener {
private static final String TAG = "ContactSelectionActivity";
private static final String TAG = ContactSelectionActivity.class.getSimpleName();
protected ContactSelectionListFragment contactsFragment;
@@ -67,7 +67,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
*/
public class ContactSelectionListFragment extends Fragment
implements LoaderManager.LoaderCallbacks<DcContactsLoader.Ret>, DcEventCenter.DcEventDelegate {
private static final String TAG = "ContactSelectionListFragment";
private static final String TAG = ContactSelectionListFragment.class.getSimpleName();
public static final String MULTI_SELECT = "multi_select";
public static final String SELECT_UNENCRYPTED_EXTRA = "select_unencrypted_extra";
@@ -148,7 +148,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
InputPanel.Listener,
InputPanel.MediaListener,
AudioView.OnActionListener {
private static final String TAG = "ConversationActivity";
private static final String TAG = ConversationActivity.class.getSimpleName();
public static final String ACCOUNT_ID_EXTRA = "account_id";
public static final String CHAT_ID_EXTRA = "chat_id";
@@ -860,6 +860,9 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
private void askSendingFiles(ArrayList<Uri> uriList, Runnable onConfirm) {
String message =
String.format(getString(R.string.ask_send_files_to_chat), uriList.size(), dcChat.getName());
if (SendRelayedMessageUtil.containsVideoType(context, uriList)) {
message += "\n\n" + getString(R.string.videos_sent_without_recoding);
}
new AlertDialog.Builder(this)
.setMessage(message)
.setCancelable(false)
@@ -80,7 +80,7 @@ import org.thoughtcrime.securesms.util.views.ConversationAdaptiveActionsToolbar;
@SuppressLint("StaticFieldLeak")
public class ConversationFragment extends MessageSelectorFragment {
private static final String TAG = "ConversationFragment";
private static final String TAG = ConversationFragment.class.getSimpleName();
private static final int SCROLL_ANIMATION_THRESHOLD = 50;
@@ -86,7 +86,7 @@ import org.thoughtcrime.securesms.util.views.Stub;
* @author Moxie Marlinspike
*/
public class ConversationItem extends BaseConversationItem {
private static final String TAG = "ConversationItem";
private static final String TAG = ConversationItem.class.getSimpleName();
private static final Rect SWIPE_RECT = new Rect();
@@ -91,7 +91,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
public class ConversationListActivity extends PassphraseRequiredActionBarActivity
implements ConversationListFragment.ConversationSelectedListener {
private static final String TAG = "ConversationListActivity";
private static final String TAG = ConversationListActivity.class.getSimpleName();
private static final String OPENPGP4FPR = "openpgp4fpr";
private static final String NDK_ARCH_WARNED = "ndk_arch_warned";
public static final String CLEAR_NOTIFICATIONS = "clear_notifications";
@@ -626,18 +626,14 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
final DcContext dcContext = DcHelper.getContext(this);
int fwdAccId = getForwardedMessageAccountId(this);
if (fwdAccId == dcContext.getAccountId() && dcContext.getChat(chatId).isSelfTalk()) {
SendRelayedMessageUtil.immediatelyRelay(
this,
chatId,
() -> {
Toast.makeText(
this,
DynamicTheme.getCheckmarkEmoji(this) + " " + getString(R.string.saved),
Toast.LENGTH_SHORT)
.show();
handleResetRelaying();
finish();
});
SendRelayedMessageUtil.immediatelyRelay(this, chatId);
Toast.makeText(
this,
DynamicTheme.getCheckmarkEmoji(this) + " " + getString(R.string.saved),
Toast.LENGTH_SHORT)
.show();
handleResetRelaying();
finish();
} else {
Intent intent = new Intent(this, ConversationActivity.class);
intent.putExtra(ConversationActivity.ACCOUNT_ID_EXTRA, dcContext.getAccountId());
@@ -56,7 +56,7 @@ public class ConversationListFragment extends BaseConversationListFragment
public static final String ARCHIVE = "archive";
public static final String RELOAD_LIST = "reload_list";
private static final String TAG = "ConversationListFragment";
private static final String TAG = ConversationListFragment.class.getSimpleName();
private RecyclerView list;
private View emptyState;
@@ -42,7 +42,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
@SuppressLint("StaticFieldLeak")
public class CreateProfileActivity extends BaseActionBarActivity {
private static final String TAG = "CreateProfileActivity";
private static final String TAG = CreateProfileActivity.class.getSimpleName();
private static final int REQUEST_CODE_AVATAR = 1;
@@ -15,7 +15,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
public class EphemeralMessagesDialog {
private static final String TAG = "EphemeralMessagesDialog";
private static final String TAG = EphemeralMessagesDialog.class.getSimpleName();
public static void show(
final Context context,
@@ -46,7 +46,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
implements ItemClickListener {
private static final String TAG = "GroupCreateActivity";
private static final String TAG = GroupCreateActivity.class.getSimpleName();
public static final String EDIT_GROUP_CHAT_ID = "edit_group_chat_id";
public static final String CREATE_BROADCAST = "create_broadcast";
public static final String UNENCRYPTED = "unencrypted";
@@ -307,7 +307,8 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
private boolean showGroupNameEmptyToast(String groupName) {
if (groupName == null) {
Toast.makeText(this, getString(R.string.please_enter_chat_name), Toast.LENGTH_LONG).show();
Toast.makeText(this, getString(R.string.group_please_enter_group_name), Toast.LENGTH_LONG)
.show();
return true;
}
return false;
@@ -65,7 +65,7 @@ import org.thoughtcrime.securesms.util.views.ProgressDialog;
public class InstantOnboardingActivity extends BaseActionBarActivity
implements DcEventCenter.DcEventDelegate {
private static final String TAG = "InstantOnboardingActivity";
private static final String TAG = InstantOnboardingActivity.class.getSimpleName();
private static final String DCACCOUNT = "dcaccount";
private static final String DCLOGIN = "dclogin";
private static final String INSTANCES_URL = "https://chatmail.at/relays";
@@ -18,7 +18,7 @@ import org.thoughtcrime.securesms.util.FileProviderUtil;
public class LogViewActivity extends BaseActionBarActivity {
private static final String TAG = "LogViewActivity";
private static final String TAG = LogViewActivity.class.getSimpleName();
LogViewFragment logViewFragment;
@@ -69,7 +69,7 @@ import org.thoughtcrime.securesms.util.Util;
public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
implements RecipientModifiedListener, LoaderManager.LoaderCallbacks<DcMediaGalleryElement> {
private static final String TAG = "MediaPreviewActivity";
private static final String TAG = MediaPreviewActivity.class.getSimpleName();
public static final String ACTIVITY_TITLE_EXTRA = "activity_title";
public static final String EDIT_AVATAR_CHAT_ID = "avatar_for_chat_id";
@@ -41,7 +41,7 @@ import org.thoughtcrime.securesms.qr.QrCodeHandler;
*/
public class NewConversationActivity extends ContactSelectionActivity {
private static final String TAG = "NewConversationActivity";
private static final String TAG = NewConversationActivity.class.getSimpleName();
@Override
public void onCreate(Bundle bundle, boolean ready) {
@@ -7,7 +7,7 @@ import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.service.GenericForegroundService;
public abstract class PassphraseRequiredActionBarActivity extends BaseActionBarActivity {
private static final String TAG = "PassphraseRequiredActionBarActivity";
private static final String TAG = PassphraseRequiredActionBarActivity.class.getSimpleName();
@Override
protected final void onCreate(Bundle savedInstanceState) {
@@ -29,7 +29,7 @@ import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.util.Util;
public class ProfileAdapter extends RecyclerView.Adapter {
private static final String TAG = "ProfileAdapter";
private static final String TAG = ProfileAdapter.class.getSimpleName();
public static final int ITEM_AVATAR = 10;
public static final int ITEM_DIVIDER = 20;
@@ -38,7 +38,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
public class ProfileFragment extends Fragment
implements ProfileAdapter.ItemClickListener, DcEventCenter.DcEventDelegate {
private static final String TAG = "ProfileFragment";
private static final String TAG = ProfileFragment.class.getSimpleName();
public static final String CHAT_ID_EXTRA = "chat_id";
public static final String CONTACT_ID_EXTRA = "contact_id";
@@ -17,7 +17,7 @@ import org.thoughtcrime.securesms.providers.PersistentBlobProvider;
public class ResolveMediaTask extends AsyncTask<Uri, Void, Uri> {
private static final String TAG = "ResolveMediaTask";
private static final String TAG = ResolveMediaTask.class.getSimpleName();
interface OnMediaResolvedListener {
void onMediaResolved(Uri uri);
@@ -47,7 +47,7 @@ import org.thoughtcrime.securesms.util.ShareUtil;
*/
public class ShareActivity extends PassphraseRequiredActionBarActivity
implements ResolveMediaTask.OnMediaResolvedListener {
private static final String TAG = "ShareActivity";
private static final String TAG = ShareActivity.class.getSimpleName();
public static final String EXTRA_ACC_ID = "acc_id";
public static final String EXTRA_CHAT_ID = "chat_id";
@@ -18,18 +18,21 @@ public class ShareLocationDialog {
switch (which) {
default:
case 0:
shareLocationUnit = 30 * 60;
shareLocationUnit = 5 * 60;
break;
case 1:
shareLocationUnit = 60 * 60;
shareLocationUnit = 30 * 60;
break;
case 2:
shareLocationUnit = 2 * 60 * 60;
shareLocationUnit = 60 * 60;
break;
case 3:
shareLocationUnit = 6 * 60 * 60;
shareLocationUnit = 2 * 60 * 60;
break;
case 4:
shareLocationUnit = 6 * 60 * 60;
break;
case 5:
shareLocationUnit = 24 * 60 * 60;
break;
}
@@ -32,7 +32,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
public class WebViewActivity extends PassphraseRequiredActionBarActivity
implements SearchView.OnQueryTextListener, WebView.FindListener {
private static final String TAG = "WebViewActivity";
private static final String TAG = WebViewActivity.class.getSimpleName();
// Regex to extract the host from a URL for IDN conversion.
private static final Pattern URL_PATTERN =
Pattern.compile("^((?:[a-zA-Z0-9]+://)?)([^/?#]+)(.*)$");
@@ -59,7 +59,7 @@ import org.thoughtcrime.securesms.util.MediaUtil;
import org.thoughtcrime.securesms.util.Util;
public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcEventDelegate {
private static final String TAG = "WebxdcActivity";
private static final String TAG = WebxdcActivity.class.getSimpleName();
private static final String EXTRA_ACCOUNT_ID = "accountId";
private static final String EXTRA_APP_MSG_ID = "appMessageId";
private static final String EXTRA_HIDE_ACTION_BAR = "hideActionBar";
@@ -30,7 +30,7 @@ import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.ViewUtil;
public class WebxdcStoreActivity extends PassphraseRequiredActionBarActivity {
private static final String TAG = "WebxdcStoreActivity";
private static final String TAG = WebxdcStoreActivity.class.getSimpleName();
private DcContext dcContext;
private Rpc rpc;
@@ -48,7 +48,7 @@ public class WelcomeActivity extends BaseActionBarActivity
implements DcEventCenter.DcEventDelegate {
public static final String BACKUP_QR_EXTRA = "backup_qr_extra";
public static final int PICK_BACKUP = 20574;
private static final String TAG = "WelcomeActivity";
private static final String TAG = WelcomeActivity.class.getSimpleName();
public static final String TMP_BACKUP_FILE = "tmp-backup-file";
private ProgressDialog progressDialog = null;
@@ -41,7 +41,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
public class AccountSelectionListFragment extends DialogFragment
implements DcEventCenter.DcEventDelegate {
private static final String TAG = "AccountSelectionListFragment";
private static final String TAG = AccountSelectionListFragment.class.getSimpleName();
private static final String ARG_SELECT_ONLY = "select_only";
private RecyclerView recyclerView;
private AccountSelectionListAdapter adapter;
@@ -15,7 +15,7 @@ import org.thoughtcrime.securesms.util.Prefs;
public class AudioCodec {
private static final String TAG = "AudioCodec";
private static final String TAG = AudioCodec.class.getSimpleName();
private static final int SAMPLE_RATE_BALANCED = 44100;
private static final int BIT_RATE_BALANCED = 32000;
@@ -196,7 +196,7 @@ public class AudioCodec {
setFinished();
}
},
"AudioCodec")
AudioCodec.class.getSimpleName())
.start();
}
@@ -18,7 +18,7 @@ import org.thoughtcrime.securesms.util.Util;
public class AudioRecorder {
private static final String TAG = "AudioRecorder";
private static final String TAG = AudioRecorder.class.getSimpleName();
private static final ExecutorService executor = ThreadUtil.newDynamicSingleThreadedExecutor();
@@ -20,7 +20,7 @@ import org.thoughtcrime.securesms.R;
/** Bottom sheet dialog for selecting audio output device */
@RequiresApi(Build.VERSION_CODES.O)
public class AudioDevicePickerDialog extends BottomSheetDialog {
private static final String TAG = "AudioDevicePickerDialog";
private static final String TAG = AudioDevicePickerDialog.class.getSimpleName();
public interface OnDeviceSelectedListener {
void onDeviceSelected(CallEndpointCompat endpoint);
@@ -51,7 +51,7 @@ import org.webrtc.VideoTrack;
@RequiresApi(api = Build.VERSION_CODES.O)
public class CallActivity extends AppCompatActivity {
private static final String TAG = "CallActivity";
private static final String TAG = CallActivity.class.getSimpleName();
private static final int MIC_PERMISSION_REQUEST_CODE = 1001;
private static final int CAMERA_PERMISSION_REQUEST_CODE = 1002;
@@ -63,7 +63,7 @@ import org.webrtc.VideoTrack;
@RequiresApi(api = Build.VERSION_CODES.O)
public class CallCoordinator implements DcEventCenter.DcEventDelegate {
private static final String TAG = "CallCoordinator";
private static final String TAG = CallCoordinator.class.getSimpleName();
// Notification channels
private static final String CHANNEL_ID_INCOMING = "voip_incoming_calls";
@@ -215,8 +215,7 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
calleeName = "Unknown";
}
showOrUpdateOngoingNotification(
appContext.getString(R.string.calling_person, calleeName));
showOrUpdateOngoingNotification("Calling " + calleeName + "...");
}
// Initialize call
@@ -403,15 +402,6 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
callService.stopRingtone();
}
// Promote the service to foreground immediately. Waiting until onIncomingCallAccepted
// on executor pool thread is too late on stricter OEM.
//
// Do not cancel() but use showOrUpdateOngoingNotification to replace incoming
// notification without a gap.
String callerName = displayName.getValue();
if (callerName == null) callerName = "Unknown";
showOrUpdateOngoingNotification(appContext.getString(R.string.call_with, callerName));
// Notify Android system with CallControlScope
CallControlScope scope = activeCallControlScope;
if (scope != null) {
@@ -435,6 +425,8 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
}
});
}
notificationManager.cancel(NOTIFICATION_ID_CALL);
}
public void answerWebRTC() {
@@ -929,7 +921,7 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
callerName = "Unknown";
}
showOrUpdateOngoingNotification(appContext.getString(R.string.call_with, callerName));
showOrUpdateOngoingNotification("Call with " + callerName);
}
private synchronized void onCallAnsweredOnOtherDevice() {
@@ -1016,7 +1008,7 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
if (calleeName == null) {
calleeName = "Unknown";
}
showOrUpdateOngoingNotification(appContext.getString(R.string.call_with, calleeName));
showOrUpdateOngoingNotification("Call with " + calleeName);
}
private synchronized void onCallEnded(int accId, int callId) {
@@ -1109,14 +1101,6 @@ public class CallCoordinator implements DcEventCenter.DcEventDelegate {
return;
}
if (callService != null) {
try {
callService.stopForegroundAndDismiss();
} catch (Exception e) {
Log.w(TAG, "stopForegroundAndDismiss failed", e);
}
}
// Clear state
this.activeAccId = null;
this.activeCallId = null;
@@ -4,7 +4,6 @@ import android.app.Notification;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ServiceInfo;
import android.media.AudioAttributes;
import android.media.AudioFocusRequest;
import android.media.AudioManager;
@@ -14,9 +13,7 @@ import android.media.ToneGenerator;
import android.net.Uri;
import android.os.Binder;
import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.util.Log;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
@@ -36,7 +33,7 @@ import org.webrtc.VideoTrack;
@RequiresApi(api = Build.VERSION_CODES.O)
public class CallService extends Service implements WebRTCClient.Callbacks {
private static final String TAG = "CallService";
private static final String TAG = CallService.class.getSimpleName();
private final IBinder binder = new LocalBinder();
@@ -435,12 +432,6 @@ public class CallService extends Service implements WebRTCClient.Callbacks {
disposeWebRTC();
try {
stopForeground(STOP_FOREGROUND_REMOVE);
} catch (Exception e) {
Log.w(TAG, "stopForeground failed", e);
}
stopService();
}
@@ -503,44 +494,13 @@ public class CallService extends Service implements WebRTCClient.Callbacks {
// Foreground Notification
public void startForegroundWithNotification(int id, Notification notification) {
// Always run on main thread
if (Looper.myLooper() != Looper.getMainLooper()) {
new Handler(Looper.getMainLooper())
.post(() -> startForegroundWithNotification(id, notification));
return;
}
Log.d(TAG, "Starting call FGS with notification id: " + id);
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
startForeground(id, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_PHONE_CALL);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
int types =
ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE
| ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA;
startForeground(id, notification, types);
} else {
startForeground(id, notification);
}
} catch (Exception e) {
Log.e(TAG, "startForeground failed", e);
if (callCoordinator != null) {
callCoordinator.reportError("Failed to activate call FGS: " + e.getMessage());
}
}
Log.d(TAG, "Starting foreground with notification id: " + id);
startForeground(id, notification);
}
public void stopForegroundAndDismiss() {
if (Looper.myLooper() != Looper.getMainLooper()) {
new Handler(Looper.getMainLooper()).post(this::stopForegroundAndDismiss);
return;
}
Log.d(TAG, "Stopping call FGS and dismissing notification");
try {
stopForeground(STOP_FOREGROUND_REMOVE);
} catch (Exception e) {
Log.w(TAG, "stopForeground failed", e);
}
Log.d(TAG, "Stopping foreground and dismissing notification");
stopForeground(STOP_FOREGROUND_REMOVE);
}
// Cleanup
@@ -21,7 +21,7 @@ import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.BitmapUtil;
public class CallUtil {
private static final String TAG = "CallUtil";
private static final String TAG = CallUtil.class.getSimpleName();
@RequiresApi(api = Build.VERSION_CODES.O)
public static void startAudioCall(Context context, int chatId) {
@@ -20,7 +20,7 @@ import org.webrtc.VideoTrack;
@RequiresApi(api = Build.VERSION_CODES.O)
public class CallViewModel extends AndroidViewModel {
private static final String TAG = "CallViewModel";
private static final String TAG = CallViewModel.class.getSimpleName();
private final CallCoordinator callCoordinator;
@@ -24,7 +24,7 @@ import org.webrtc.VideoTrack;
public class MediaStreamManager {
private static final String TAG = "MediaStreamManager";
private static final String TAG = MediaStreamManager.class.getSimpleName();
private static final String STREAM_ID = "local_stream";
private static final String AUDIO_TRACK_ID = "audio_track";
private static final String VIDEO_TRACK_ID = "video_track";
@@ -15,7 +15,7 @@ import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.util.DateUtils;
public class CallItemView extends FrameLayout {
private static final String TAG = "CallItemView";
private static final String TAG = CallItemView.class.getSimpleName();
private final @NonNull ImageView icon;
private final @NonNull TextView title;
@@ -43,7 +43,7 @@ public class InputPanel extends ConstraintLayout
KeyboardAwareLinearLayout.OnKeyboardShownListener,
MediaKeyboard.MediaKeyboardListener {
private static final String TAG = "InputPanel";
private static final String TAG = InputPanel.class.getSimpleName();
private static final int FADE_TIME = 150;
@@ -38,7 +38,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
* been opened and what its height would be.
*/
public class KeyboardAwareLinearLayout extends LinearLayoutCompat {
private static final String TAG = "KeyboardAwareLinearLayout";
private static final String TAG = KeyboardAwareLinearLayout.class.getSimpleName();
private static final long KEYBOARD_DEBOUNCE = 150;
@@ -38,7 +38,7 @@ import org.thoughtcrime.securesms.util.Util;
public class QuoteView extends FrameLayout implements RecipientForeverObserver {
private static final String TAG = "QuoteView";
private static final String TAG = QuoteView.class.getSimpleName();
private static final int MESSAGE_TYPE_PREVIEW = 0;
@@ -30,7 +30,7 @@ public class ScaleStableImageView extends AppCompatImageView
implements KeyboardAwareLinearLayout.OnKeyboardShownListener,
KeyboardAwareLinearLayout.OnKeyboardHiddenListener {
private static final String TAG = "ScaleStableImageView";
private static final String TAG = ScaleStableImageView.class.getSimpleName();
private Drawable defaultDrawable;
private Drawable currentDrawable;
@@ -22,7 +22,7 @@ import org.thoughtcrime.securesms.animation.AnimationCompleteListener;
public class SearchToolbar extends LinearLayout {
private static final String TAG = "SearchToolbar";
private static final String TAG = SearchToolbar.class.getSimpleName();
private float x, y;
private MenuItem searchItem;
private EditText searchText;
@@ -30,7 +30,7 @@ import org.thoughtcrime.securesms.util.Util;
public class ThumbnailView extends FrameLayout {
private static final String TAG = "ThumbnailView";
private static final String TAG = ThumbnailView.class.getSimpleName();
private static final int WIDTH = 0;
private static final int HEIGHT = 1;
private static final int MIN_WIDTH = 0;
@@ -17,7 +17,7 @@ import org.thoughtcrime.securesms.mms.VcardSlide;
import org.thoughtcrime.securesms.recipients.Recipient;
public class VcardView extends FrameLayout {
private static final String TAG = "VcardView";
private static final String TAG = VcardView.class.getSimpleName();
private final @NonNull AvatarView avatar;
private final @NonNull TextView name;
@@ -21,7 +21,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class AudioPlaybackViewModel extends ViewModel {
private static final String TAG = "AudioPlaybackViewModel";
private static final String TAG = AudioPlaybackViewModel.class.getSimpleName();
private static final int NON_MESSAGE_AUDIO_MSG_ID =
0; // Audios not attached to a message doesn't have message id.
@@ -23,7 +23,7 @@ import org.thoughtcrime.securesms.util.DateUtils;
public class AudioView extends FrameLayout {
private static final String TAG = "AudioView";
private static final String TAG = AudioView.class.getSimpleName();
private final @NonNull ImageView playPauseButton;
private final AnimatedVectorDrawableCompat playToPauseDrawable;
@@ -22,7 +22,7 @@ import org.thoughtcrime.securesms.util.ResUtil;
public class MediaKeyboard extends LinearLayout
implements InputView, Consumer<EmojiViewItem>, StickerPickerView.StickerPickerListener {
private static final String TAG = "MediaKeyboard";
private static final String TAG = MediaKeyboard.class.getSimpleName();
@Nullable private MediaKeyboardListener keyboardListener;
private EmojiPickerView emojiPicker;
@@ -23,7 +23,7 @@ import org.thoughtcrime.securesms.util.Prefs;
@SuppressLint("BatteryLife")
public class DozeReminder {
private static final String TAG = "DozeReminder";
private static final String TAG = DozeReminder.class.getSimpleName();
public static boolean isEligible(Context context) {
if (context == null) {
@@ -19,7 +19,7 @@ import androidx.viewpager.widget.ViewPager;
*/
public class HackyViewPager extends ViewPager {
private static final String TAG = "HackyViewPager";
private static final String TAG = HackyViewPager.class.getSimpleName();
public HackyViewPager(Context context) {
super(context);
@@ -18,7 +18,7 @@ import org.thoughtcrime.securesms.accounts.AccountSelectionListFragment;
public class AccountManager {
private static final String TAG = "AccountManager";
private static final String TAG = AccountManager.class.getSimpleName();
private static final String LAST_ACCOUNT_ID = "last_account_id";
private static AccountManager self;
@@ -38,7 +38,7 @@ public class AccountManager {
return self;
}
public void migrateToDcAccounts(Context context, DcAccounts dcAccounts) {
public void migrateToDcAccounts(ApplicationContext context) {
try {
int selectAccountId = 0;
@@ -49,7 +49,8 @@ public class AccountManager {
if (!file.isDirectory()
&& file.getName().startsWith("messenger")
&& file.getName().endsWith(".db")) {
int accountId = dcAccounts.migrateAccount(file.getAbsolutePath());
int accountId =
ApplicationContext.getDcAccounts().migrateAccount(file.getAbsolutePath());
if (accountId != 0) {
String selName =
PreferenceManager.getDefaultSharedPreferences(context)
@@ -66,7 +67,7 @@ public class AccountManager {
}
if (selectAccountId != 0) {
dcAccounts.selectAccount(selectAccountId);
ApplicationContext.getDcAccounts().selectAccount(selectAccountId);
}
} catch (Exception e) {
Log.e(TAG, "Error in migrateToDcAccounts()", e);
@@ -14,7 +14,7 @@ import org.thoughtcrime.securesms.service.FetchForegroundService;
import org.thoughtcrime.securesms.util.Util;
public class DcEventCenter {
private static final String TAG = "DcEventCenter";
private static final String TAG = DcEventCenter.class.getSimpleName();
private @NonNull final Hashtable<Integer, ArrayList<DcEventDelegate>> currentAccountObservers =
new Hashtable<>();
private @NonNull final Hashtable<Integer, ArrayList<DcEventDelegate>> multiAccountObservers =
@@ -42,7 +42,7 @@ import org.thoughtcrime.securesms.util.Util;
public class DcHelper {
private static final String TAG = "DcHelper";
private static final String TAG = DcHelper.class.getSimpleName();
public static final String CONFIG_CONFIGURED_ADDRESS = "configured_addr";
public static final String CONFIG_DISPLAY_NAME = "displayname";
@@ -225,8 +225,6 @@ public class DcHelper {
dcContext.setStockTranslation(201, context.getString(R.string.qrshow_join_channel_hint));
dcContext.setStockTranslation(202, context.getString(R.string.you_joined_the_channel));
dcContext.setStockTranslation(203, context.getString(R.string.secure_join_channel_started));
dcContext.setStockTranslation(204, context.getString(R.string.channel_name_changed));
dcContext.setStockTranslation(205, context.getString(R.string.channel_image_changed));
dcContext.setStockTranslation(210, context.getString(R.string.stats_msg_body));
dcContext.setStockTranslation(220, context.getString(R.string.proxy_enabled));
dcContext.setStockTranslation(221, context.getString(R.string.proxy_enabled_hint));
@@ -40,7 +40,7 @@ import org.thoughtcrime.securesms.util.Util;
*/
public class DirectShareUtil {
private static final String TAG = "DirectShareUtil";
private static final String TAG = DirectShareUtil.class.getSimpleName();
private static final String SHORTCUT_CATEGORY = "android.shortcut.conversation";
public static void clearShortcut(@NonNull Context context, int chatId) {
@@ -21,7 +21,7 @@ import org.thoughtcrime.securesms.util.Prefs;
public class KeepAliveService extends Service {
private static final String TAG = "KeepAliveService";
private static final String TAG = KeepAliveService.class.getSimpleName();
static KeepAliveService s_this = null;
@@ -10,7 +10,7 @@ import android.util.Log;
public class NetworkStateReceiver extends BroadcastReceiver {
private static final String TAG = "NetworkStateReceiver";
private static final String TAG = NetworkStateReceiver.class.getSimpleName();
private int debugConnectedCount;
@Override
@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.thoughtcrime.securesms.ContactSelectionListFragment;
import org.thoughtcrime.securesms.util.Hash;
import org.thoughtcrime.securesms.util.Prefs;
@@ -36,7 +37,7 @@ import org.thoughtcrime.securesms.util.Prefs;
* @author Moxie Marlinspike
*/
public class ContactAccessor {
private static final String TAG = "ContactAccessor";
private static final String TAG = ContactSelectionListFragment.class.getSimpleName();
private static final int CONTACT_CURSOR_NAME = 0;
@@ -12,7 +12,7 @@ import org.thoughtcrime.securesms.util.AsyncLoader;
public class PagingMediaLoader extends AsyncLoader<DcMediaGalleryElement> {
private static final String TAG = "PagingMediaLoader";
private static final String TAG = PagingMediaLoader.class.getSimpleName();
private final DcMsg msg;
private final boolean leftIsRecent;
@@ -23,7 +23,7 @@ import org.thoughtcrime.securesms.connect.DcHelper;
public class LocationStreamingService extends Service {
private static final String TAG = "LocationStreamingService";
private static final String TAG = LocationStreamingService.class.getSimpleName();
private static final String ACTION_STOP = "org.thoughtcrime.securesms.geolocation.STOP_STREAMING";
private static final int NOTIFICATION_ID = 8801;
private static final String CHANNEL_ID = "location_streaming";
@@ -15,7 +15,7 @@ import java.util.concurrent.Executor;
public class PlatformLocationSource implements LocationSource {
private static final String TAG = "PlatformLocationSource";
private static final String TAG = PlatformLocationSource.class.getSimpleName();
private static final long UPDATE_INTERVAL_MS = 0;
private LocationManager locationManager;
@@ -19,7 +19,7 @@ import androidx.annotation.NonNull;
class JobConsumer extends Thread {
private static final String TAG = "JobConsumer";
private static final String TAG = JobConsumer.class.getSimpleName();
enum JobResult {
SUCCESS,
@@ -75,7 +75,7 @@ import org.thoughtcrime.securesms.util.views.Stub;
public class AttachmentManager {
private static final String TAG = "AttachmentManager";
private static final String TAG = AttachmentManager.class.getSimpleName();
private final @NonNull Context context;
private final @NonNull Stub<View> attachmentViewStub;
@@ -11,7 +11,7 @@ import java.io.InputStream;
class DecryptableStreamLocalUriFetcher extends StreamLocalUriFetcher {
private static final String TAG = "DecryptableStreamLocalUriFetcher";
private static final String TAG = DecryptableStreamLocalUriFetcher.class.getSimpleName();
private final Context context;
@@ -7,7 +7,7 @@ import android.util.Log;
import org.thoughtcrime.securesms.R;
public class InChatSounds {
private static final String TAG = "InChatSounds";
private static final String TAG = InChatSounds.class.getSimpleName();
private static volatile InChatSounds instance;
private SoundPool soundPool = null;
@@ -54,7 +54,7 @@ import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.util.Util;
public class NotificationCenter {
private static final String TAG = "NotificationCenter";
private static final String TAG = NotificationCenter.class.getSimpleName();
@NonNull private final ApplicationContext context;
private volatile ChatData visibleChat = null;
private volatile Pair<Integer, Integer> visibleWebxdc = null;
@@ -33,7 +33,7 @@ import org.thoughtcrime.securesms.util.Util;
/** Get the response text from the Wearable Device and sends an message as a reply */
public class RemoteReplyReceiver extends BroadcastReceiver {
public static final String TAG = "RemoteReplyReceiver";
public static final String TAG = RemoteReplyReceiver.class.getSimpleName();
public static final String REPLY_ACTION = "org.thoughtcrime.securesms.notifications.WEAR_REPLY";
public static final String ACCOUNT_ID_EXTRA = "account_id";
public static final String CHAT_ID_EXTRA = "chat_id";
@@ -44,7 +44,7 @@ import org.thoughtcrime.securesms.util.Util;
public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
implements DcEventCenter.DcEventDelegate {
private static final String TAG = "AdvancedPreferenceFragment";
private static final String TAG = AdvancedPreferenceFragment.class.getSimpleName();
private ListPreference showEmails;
CheckBoxPreference selfReportingCheckbox;
@@ -34,7 +34,7 @@ import org.thoughtcrime.securesms.util.Prefs;
public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragment
implements Preference.OnPreferenceChangeListener {
private static final String TAG = "NotificationsPreferenceFragment";
private static final String TAG = NotificationsPreferenceFragment.class.getSimpleName();
private CheckBoxPreference ignoreBattery;
private CheckBoxPreference notificationsEnabled;
@@ -24,7 +24,7 @@ import org.thoughtcrime.securesms.util.Util;
public class PersistentBlobProvider {
private static final String TAG = "PersistentBlobProvider";
private static final String TAG = PersistentBlobProvider.class.getSimpleName();
private static final String URI_STRING = "content://org.thoughtcrime.securesms/capture-new";
public static final Uri CONTENT_URI = Uri.parse(URI_STRING);
@@ -26,7 +26,7 @@ import org.thoughtcrime.securesms.util.Util;
public class BackupProviderFragment extends Fragment implements DcEventCenter.DcEventDelegate {
private static final String TAG = "BackupProviderFragment";
private static final String TAG = BackupProviderFragment.class.getSimpleName();
private DcContext dcContext;
private DcBackupProvider dcBackupProvider;
@@ -19,7 +19,7 @@ import org.thoughtcrime.securesms.util.Util;
public class BackupReceiverFragment extends Fragment implements DcEventCenter.DcEventDelegate {
private static final String TAG = "BackupProviderFragment";
private static final String TAG = BackupProviderFragment.class.getSimpleName();
private DcContext dcContext;
private TextView statusLine;
@@ -27,7 +27,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
public class BackupTransferActivity extends BaseActionBarActivity {
private static final String TAG = "BackupTransferActivity";
private static final String TAG = BackupTransferActivity.class.getSimpleName();
public enum TransferMode {
INVALID(0),
@@ -40,7 +40,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
public class QrActivity extends BaseActionBarActivity implements View.OnClickListener {
private static final String TAG = "QrActivity";
private static final String TAG = QrActivity.class.getSimpleName();
public static final String EXTRA_SCAN_RELAY = "scan_relay";
private static final int REQUEST_CODE_IMAGE = 46243;
@@ -26,7 +26,7 @@ import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.views.ProgressDialog;
public class QrCodeHandler {
private static final String TAG = "QrCodeHandler";
private static final String TAG = QrCodeHandler.class.getSimpleName();
public static int SECUREJOIN_SOURCE_EXTERNAL_LINK = 1;
public static int SECUREJOIN_SOURCE_INTERNAL_LINK = 2;
@@ -363,24 +363,20 @@ public class QrCodeHandler {
SecurejoinSource source,
SecurejoinUiPath uipath) {
String msg;
int positiveButton;
switch (qrParsed.getState()) {
case DcContext.DC_QR_ASK_VERIFYGROUP:
msg = activity.getString(R.string.qrscan_ask_join_group, qrParsed.getText1());
positiveButton = R.string.join_group;
break;
case DcContext.DC_QR_ASK_JOIN_BROADCAST:
msg = activity.getString(R.string.qrscan_ask_join_channel, qrParsed.getText1());
positiveButton = R.string.join_channel;
break;
default:
msg = activity.getString(R.string.ask_start_chat_with, name);
positiveButton = R.string.ok;
break;
}
builder.setMessage(msg);
builder.setPositiveButton(
positiveButton,
android.R.string.ok,
(dialogInterface, i) -> {
secureJoinByQr(qrRawString, source, uipath);
});
@@ -19,7 +19,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
public class QrScanFragment extends Fragment {
private static final String TAG = "QrScanFragment";
private static final String TAG = QrScanFragment.class.getSimpleName();
private CompoundBarcodeView barcodeScannerView;
private MyCaptureManager capture;
@@ -29,7 +29,7 @@ import org.thoughtcrime.securesms.util.Util;
public class QrShowFragment extends Fragment implements DcEventCenter.DcEventDelegate {
private static final String TAG = "QrShowFragment";
private static final String TAG = QrShowFragment.class.getSimpleName();
public static final int WHITE = 0xFFFFFFFF;
private static final int BLACK = 0xFF000000;
private static final int WIDTH = 400;
@@ -31,7 +31,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
public class ReactionsDetailsFragment extends DialogFragment
implements DcEventCenter.DcEventDelegate {
private static final String TAG = "ReactionsDetailsFragment";
private static final String TAG = ReactionsDetailsFragment.class.getSimpleName();
private static final String ARG_MSG_ID = "msg_id";
private RecyclerView recyclerView;
@@ -56,7 +56,7 @@ public class EditRelayActivity extends BaseActionBarActivity
PORT,
}
private static final String TAG = "EditRelayActivity";
private static final String TAG = EditRelayActivity.class.getSimpleName();
public static final String EXTRA_ADDR = "extra_addr";
private TextInputEditText emailInput;
@@ -37,7 +37,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
public class RelayListActivity extends BaseActionBarActivity
implements RelayListAdapter.OnRelayClickListener, DcEventCenter.DcEventDelegate {
private static final String TAG = "RelayListActivity";
private static final String TAG = RelayListActivity.class.getSimpleName();
public static final String EXTRA_QR_DATA = "qr_data";
private RelayListAdapter adapter;
@@ -37,7 +37,7 @@ import org.thoughtcrime.securesms.util.Util;
public final class ImageEditorFragment extends Fragment
implements ImageEditorHud.EventListener, VerticalSlideColorPicker.OnColorChangeListener {
private static final String TAG = "ImageEditorFragment";
private static final String TAG = ImageEditorFragment.class.getSimpleName();
private static final String KEY_IMAGE_URI = "image_uri";
@@ -29,7 +29,7 @@ import org.thoughtcrime.securesms.R;
public class StickerSelectActivity extends FragmentActivity
implements StickerSelectFragment.StickerSelectionListener {
private static final String TAG = "StickerSelectActivity";
private static final String TAG = StickerSelectActivity.class.getSimpleName();
public static final String EXTRA_STICKER_FILE = "extra_sticker_file";
@@ -40,7 +40,7 @@ import org.thoughtcrime.securesms.util.BitmapUtil;
*/
final class UriGlideRenderer implements Renderer {
private static final String TAG = "UriGlideRenderer";
private static final String TAG = UriGlideRenderer.class.getSimpleName();
private static final int PREVIEW_DIMENSION_LIMIT = 2048;
private static final int MAX_BLUR_DIMENSION = 300;
@@ -15,7 +15,7 @@ import org.thoughtcrime.securesms.search.model.SearchResult;
import org.thoughtcrime.securesms.util.Util;
class SearchViewModel extends ViewModel {
private static final String TAG = "SearchViewModel";
private static final String TAG = SearchViewModel.class.getSimpleName();
private final ObservingLiveData searchResult;
private String lastQuery;
private final DcContext dcContext;
@@ -22,7 +22,7 @@ import org.thoughtcrime.securesms.ConversationListActivity;
public class AudioPlaybackService extends MediaSessionService {
private static final String TAG = "AudioPlaybackService";
private static final String TAG = AudioPlaybackService.class.getSimpleName();
private ExoPlayer player;
private MediaSession session;
@@ -16,7 +16,7 @@ import org.thoughtcrime.securesms.notifications.NotificationCenter;
import org.thoughtcrime.securesms.util.Util;
public final class FetchForegroundService extends Service {
private static final String TAG = "FetchForegroundService";
private static final String TAG = FetchForegroundService.class.getSimpleName();
private static final Object SERVICE_LOCK = new Object();
private static final Object STOP_NOTIFIER = new Object();
private static volatile boolean fetchingSynchronously = false;
@@ -28,7 +28,7 @@ import org.thoughtcrime.securesms.util.IntentUtils;
public final class GenericForegroundService extends Service {
private static final String TAG = "GenericForegroundService";
private static final String TAG = GenericForegroundService.class.getSimpleName();
private final IBinder binder = new LocalBinder();
@@ -26,7 +26,7 @@ import javax.microedition.khronos.egl.EGLDisplay;
public class BitmapUtil {
private static final String TAG = "BitmapUtil";
private static final String TAG = BitmapUtil.class.getSimpleName();
@WorkerThread
public static Bitmap createScaledBitmap(Bitmap bitmap, int maxWidth, int maxHeight) {
@@ -35,7 +35,7 @@ import org.thoughtcrime.securesms.providers.PersistentBlobProvider;
public class MediaUtil {
private static final String TAG = "MediaUtil";
private static final String TAG = MediaUtil.class.getSimpleName();
public static final String IMAGE_WEBP = "image/webp";
public static final String IMAGE_JPEG = "image/jpeg";
@@ -22,7 +22,7 @@ import org.thoughtcrime.securesms.preferences.widgets.NotificationPrivacyPrefere
public class Prefs {
private static final String TAG = "Prefs";
private static final String TAG = Prefs.class.getSimpleName();
public static final String RELIABLE_SERVICE_PREF = "pref_reliable_service";
public static final String DISABLE_PASSPHRASE_PREF = "pref_disable_passphrase";
@@ -34,7 +34,7 @@ import org.thoughtcrime.securesms.util.task.ProgressDialogAsyncTask;
public class SaveAttachmentTask
extends ProgressDialogAsyncTask<SaveAttachmentTask.Attachment, Void, Pair<Integer, Uri>> {
private static final String TAG = "SaveAttachmentTask";
private static final String TAG = SaveAttachmentTask.class.getSimpleName();
static final int SUCCESS = 0;
private static final int FAILURE = 1;

Some files were not shown because too many files have changed in this diff Show More