Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f13df74c authored by Kihong Seong's avatar Kihong Seong Committed by Automerger Merge Worker
Browse files

Merge "Add tests for handle and action methods in BluetoothMapContentObserver"...

Merge "Add tests for handle and action methods in BluetoothMapContentObserver" into tm-qpr-dev am: 54bac4f2

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Bluetooth/+/20876982



Change-Id: If95abc4b34b5080577807039e7eb2c791ac037fb
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 158e680f 54bac4f2
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1008,7 +1008,8 @@ public final class Utils {
        }
        values.put(Telephony.Sms.ERROR_CODE, 0);

        return 1 == context.getContentResolver().update(uri, values, null, null);
        return 1 == BluetoothMethodProxy.getInstance().contentResolverUpdate(
                context.getContentResolver(), uri, values, null, null);
    }

    /**
+8 −5
Original line number Diff line number Diff line
@@ -142,7 +142,8 @@ public class BluetoothMapContentObserver {
    private BluetoothMapMasInstance mMasInstance = null;
    private int mMasId;
    private boolean mEnableSmsMms = false;
    private boolean mObserverRegistered = false;
    @VisibleForTesting
    boolean mObserverRegistered = false;
    @VisibleForTesting
    BluetoothMapAccountItem mAccount;
    private String mAuthority = null;
@@ -2951,7 +2952,8 @@ public class BluetoothMapContentObserver {
        if (handle != -1) {
            String whereClause = " _id= " + handle;
            Uri uri = Mms.CONTENT_URI;
            Cursor queryResult = resolver.query(uri, null, whereClause, null, null);
            Cursor queryResult = BluetoothMethodProxy.getInstance().contentResolverQuery(resolver,
                    uri, null, whereClause, null, null);
            try {
                if (queryResult != null) {
                    if (queryResult.getCount() > 0) {
@@ -2959,7 +2961,8 @@ public class BluetoothMapContentObserver {
                        ContentValues data = new ContentValues();
                        /* set folder to be outbox */
                        data.put(Mms.MESSAGE_BOX, folder);
                        resolver.update(uri, data, whereClause, null);
                        BluetoothMethodProxy.getInstance().contentResolverUpdate(resolver, uri,
                                data, whereClause, null);
                        if (D) {
                            Log.d(TAG, "moved MMS message to " + getMmsFolderName(folder));
                        }
@@ -3578,7 +3581,7 @@ public class BluetoothMapContentObserver {
            if (D) {
                Log.d(TAG, "Transparent in use - delete");
            }
            resolver.delete(uri, null, null);
            BluetoothMethodProxy.getInstance().contentResolverDelete(resolver, uri, null, null);
        } else if (result == Activity.RESULT_OK) {
            /* This will trigger a notification */
            moveMmsToFolder(handle, resolver, Mms.MESSAGE_BOX_SENT);
@@ -3653,7 +3656,7 @@ public class BluetoothMapContentObserver {
            /* Delete from DB */
            ContentResolver resolver = context.getContentResolver();
            if (resolver != null) {
                resolver.delete(uri, null, null);
                BluetoothMethodProxy.getInstance().contentResolverDelete(resolver, uri, null, null);
            } else {
                Log.w(TAG, "Unable to get resolver");
            }
+197 −1
Original line number Diff line number Diff line
@@ -18,9 +18,11 @@ package com.android.bluetooth.map;

import static org.mockito.Mockito.*;

import android.app.Activity;
import android.content.ContentProviderClient;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.database.sqlite.SQLiteException;
@@ -72,7 +74,7 @@ public class BluetoothMapContentObserverTest {
    static final int TEST_ID = 1;
    static final long TEST_HANDLE_ONE = 1;
    static final long TEST_HANDLE_TWO = 2;
    static final String TEST_URI_STR = "test_uri_str";
    static final String TEST_URI_STR = "http://www.google.com";
    static final int TEST_STATUS_VALUE = 1;
    static final int TEST_THREAD_ID = 1;
    static final long TEST_OLD_THREAD_ID = 2;
@@ -106,6 +108,8 @@ public class BluetoothMapContentObserverTest {
    private ContentProviderClient mProviderClient;
    @Mock
    private BluetoothMapAccountItem mItem;
    @Mock
    private Intent mIntent;
    @Spy
    private BluetoothMethodProxy mMapMethodProxy = BluetoothMethodProxy.getInstance();

@@ -1292,6 +1296,198 @@ public class BluetoothMapContentObserverTest {
                TEST_READ_FLAG_ONE);
    }

    @Test
    public void handleMmsSendIntent_withMnsClientNotConnected() {
        when(mClient.isConnected()).thenReturn(false);

        Assert.assertFalse(mObserver.handleMmsSendIntent(mContext, mIntent));
    }

    @Test
    public void handleMmsSendIntent_withInvalidHandle() {
        when(mClient.isConnected()).thenReturn(true);
        doReturn((long) -1).when(mIntent).getLongExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_HANDLE, -1);

        Assert.assertTrue(mObserver.handleMmsSendIntent(mContext, mIntent));
    }

    @Test
    public void handleMmsSendIntent_withActivityResultOk() {
        when(mClient.isConnected()).thenReturn(true);
        doReturn(TEST_HANDLE_ONE).when(mIntent).getLongExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_HANDLE, -1);
        doReturn(Activity.RESULT_OK).when(mIntent).getIntExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_RESULT, Activity.RESULT_CANCELED);
        doReturn(0).when(mIntent).getIntExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_TRANSPARENT, 0);
        mObserver.mObserverRegistered = true;

        Assert.assertTrue(mObserver.handleMmsSendIntent(mContext, mIntent));
    }

    @Test
    public void handleMmsSendIntent_withActivityResultFirstUser() {
        when(mClient.isConnected()).thenReturn(true);
        doReturn(TEST_HANDLE_ONE).when(mIntent).getLongExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_HANDLE, -1);
        doReturn(Activity.RESULT_FIRST_USER).when(mIntent).getIntExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_RESULT, Activity.RESULT_CANCELED);
        mObserver.mObserverRegistered = true;
        doReturn(TEST_PLACEHOLDER_INT).when(mMapMethodProxy).contentResolverDelete(any(), any(),
                any(), any());

        Assert.assertTrue(mObserver.handleMmsSendIntent(mContext, mIntent));
    }

    @Test
    public void actionMmsSent_withInvalidHandle() {
        Map<Long, BluetoothMapContentObserver.Msg> mmsMsgList = new HashMap<>();
        BluetoothMapContentObserver.Msg msg = createSimpleMsg();
        mmsMsgList.put(TEST_HANDLE_ONE, msg);
        doReturn(1).when(mIntent).getIntExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_TRANSPARENT, 0);
        doReturn((long) -1).when(mIntent).getLongExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_HANDLE, -1);

        mObserver.actionMmsSent(mContext, mIntent, 1, mmsMsgList);

        Assert.assertTrue(mmsMsgList.containsKey(TEST_HANDLE_ONE));
    }

    @Test
    public void actionMmsSent_withTransparency() {
        Map<Long, BluetoothMapContentObserver.Msg> mmsMsgList = new HashMap<>();
        BluetoothMapContentObserver.Msg msg = createSimpleMsg();
        mmsMsgList.put(TEST_HANDLE_ONE, msg);
        // This mock turns on the transparent flag
        doReturn(1).when(mIntent).getIntExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_TRANSPARENT, 0);
        doReturn(TEST_HANDLE_ONE).when(mIntent).getLongExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_HANDLE, -1);
        doReturn(TEST_PLACEHOLDER_INT).when(mMapMethodProxy).contentResolverDelete(any(), any(),
                any(), any());

        mObserver.actionMmsSent(mContext, mIntent, 1, mmsMsgList);

        Assert.assertFalse(mmsMsgList.containsKey(TEST_HANDLE_ONE));
    }

    @Test
    public void actionMmsSent_withActivityResultOk() {
        Map<Long, BluetoothMapContentObserver.Msg> mmsMsgList = new HashMap<>();
        BluetoothMapContentObserver.Msg msg = createSimpleMsg();
        mmsMsgList.put(TEST_HANDLE_ONE, msg);
        // This mock turns off the transparent flag
        doReturn(0).when(mIntent).getIntExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_TRANSPARENT, 0);
        doReturn(TEST_HANDLE_ONE).when(mIntent).getLongExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_HANDLE, -1);

        MatrixCursor cursor = new MatrixCursor(new String[] {});
        doReturn(cursor).when(mMapMethodProxy).contentResolverQuery(any(), any(), any(), any(),
                any(), any());
        doReturn(TEST_PLACEHOLDER_INT).when(mMapMethodProxy).contentResolverUpdate(any(), any(),
                any(), any(), any());

        mObserver.actionMmsSent(mContext, mIntent, Activity.RESULT_OK, mmsMsgList);

        Assert.assertTrue(mmsMsgList.containsKey(TEST_HANDLE_ONE));
    }

    @Test
    public void actionMmsSent_withActivityResultFirstUser() {
        Map<Long, BluetoothMapContentObserver.Msg> mmsMsgList = new HashMap<>();
        BluetoothMapContentObserver.Msg msg = createSimpleMsg();
        mmsMsgList.put(TEST_HANDLE_ONE, msg);
        // This mock turns off the transparent flag
        doReturn(0).when(mIntent).getIntExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_TRANSPARENT, 0);
        doReturn(TEST_HANDLE_ONE).when(mIntent).getLongExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_HANDLE, -1);

        mObserver.actionMmsSent(mContext, mIntent, Activity.RESULT_FIRST_USER, mmsMsgList);

        Assert.assertEquals(msg.type, Mms.MESSAGE_BOX_OUTBOX);
    }

    @Test
    public void actionSmsSentDisconnected_withNullUriString() {
        // This sets to null uriString
        doReturn(null).when(mIntent).getStringExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_URI);
        doReturn(1).when(mIntent).getIntExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_TRANSPARENT, 0);

        clearInvocations(mContext);
        mObserver.actionSmsSentDisconnected(mContext, mIntent, Activity.RESULT_FIRST_USER);

        verify(mContext, never()).getContentResolver();
    }

    @Test
    public void actionSmsSentDisconnected_withActivityResultOk_andTransparentOff() {
        doReturn(TEST_URI_STR).when(mIntent).getStringExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_URI);
        // This mock turns off the transparent flag
        doReturn(0).when(mIntent).getIntExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_TRANSPARENT, 0);
        doReturn(TEST_PLACEHOLDER_INT).when(mMapMethodProxy).contentResolverUpdate(any(), any(),
                any(), any(), any());

        clearInvocations(mContext);
        mObserver.actionSmsSentDisconnected(mContext, mIntent, Activity.RESULT_OK);

        verify(mContext).getContentResolver();
    }

    @Test
    public void actionSmsSentDisconnected_withActivityResultOk_andTransparentOn() {
        doReturn(TEST_URI_STR).when(mIntent).getStringExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_URI);
        // This mock turns on the transparent flag
        doReturn(1).when(mIntent).getIntExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_TRANSPARENT, 0);
        doReturn(TEST_PLACEHOLDER_INT).when(mMapMethodProxy).contentResolverDelete(any(), any(),
                any(), any());

        clearInvocations(mContext);
        mObserver.actionSmsSentDisconnected(mContext, mIntent, Activity.RESULT_OK);

        verify(mContext).getContentResolver();
    }

    @Test
    public void actionSmsSentDisconnected_withActivityResultFirstUser_andTransparentOff() {
        doReturn(TEST_URI_STR).when(mIntent).getStringExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_URI);
        // This mock turns off the transparent flag
        doReturn(0).when(mIntent).getIntExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_TRANSPARENT, 0);
        doReturn(TEST_PLACEHOLDER_INT).when(mMapMethodProxy).contentResolverUpdate(any(), any(),
                any(), any(), any());

        clearInvocations(mContext);
        mObserver.actionSmsSentDisconnected(mContext, mIntent, Activity.RESULT_OK);

        verify(mContext).getContentResolver();
    }

    @Test
    public void actionSmsSentDisconnected_withActivityResultFirstUser_andTransparentOn() {
        doReturn(TEST_URI_STR).when(mIntent).getStringExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_URI);
        // This mock turns on the transparent flag
        doReturn(1).when(mIntent).getIntExtra(
                BluetoothMapContentObserver.EXTRA_MESSAGE_SENT_TRANSPARENT, 0);
        doReturn(null).when(mContext).getContentResolver();

        clearInvocations(mContext);
        mObserver.actionSmsSentDisconnected(mContext, mIntent, Activity.RESULT_OK);

        verify(mContext).getContentResolver();
    }

    private BluetoothMapContentObserver.Msg createSimpleMsg() {
        return new BluetoothMapContentObserver.Msg(1, 1L, 1);
    }