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

Commit 110420fc authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Adding SimPhonebookContract"

parents 46915d9a 1edf43e2
Loading
Loading
Loading
Loading
+49 −0
Original line number Diff line number Diff line
@@ -34325,6 +34325,55 @@ package android.provider {
    field public static final String PATH_SETTING_INTENT = "intent";
  }
  public final class SimPhonebookContract {
    field public static final String AUTHORITY = "com.android.simphonebook";
    field @NonNull public static final android.net.Uri AUTHORITY_URI;
  }
  public static final class SimPhonebookContract.ElementaryFiles {
    method @NonNull public static android.net.Uri getItemUri(int, int);
    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/sim-elementary-file";
    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/sim-elementary-file";
    field @NonNull public static final android.net.Uri CONTENT_URI;
    field public static final int EF_ADN = 1; // 0x1
    field public static final int EF_FDN = 2; // 0x2
    field public static final int EF_SDN = 3; // 0x3
    field public static final String EF_TYPE = "ef_type";
    field public static final int EF_UNKNOWN = 0; // 0x0
    field public static final String MAX_RECORDS = "max_records";
    field public static final String NAME_MAX_LENGTH = "name_max_length";
    field public static final String PHONE_NUMBER_MAX_LENGTH = "phone_number_max_length";
    field public static final String RECORD_COUNT = "record_count";
    field public static final String SLOT_INDEX = "slot_index";
    field public static final String SUBSCRIPTION_ID = "subscription_id";
  }
  public static final class SimPhonebookContract.SimRecords {
    method @NonNull public static android.net.Uri getContentUri(int, int);
    method @NonNull public static android.net.Uri getItemUri(int, int, int);
    method @NonNull @WorkerThread public static android.provider.SimPhonebookContract.SimRecords.NameValidationResult validateName(@NonNull android.content.ContentResolver, int, int, @NonNull String);
    field public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/sim-contact_v2";
    field public static final String CONTENT_TYPE = "vnd.android.cursor.dir/sim-contact_v2";
    field public static final String ELEMENTARY_FILE_TYPE = "elementary_file_type";
    field public static final String NAME = "name";
    field public static final String PHONE_NUMBER = "phone_number";
    field public static final String RECORD_NUMBER = "record_number";
    field public static final String SUBSCRIPTION_ID = "subscription_id";
  }
  public static final class SimPhonebookContract.SimRecords.NameValidationResult implements android.os.Parcelable {
    ctor public SimPhonebookContract.SimRecords.NameValidationResult(@NonNull String, @NonNull String, int, int);
    method public int describeContents();
    method public int getEncodedLength();
    method public int getMaxEncodedLength();
    method @NonNull public String getName();
    method @NonNull public String getSanitizedName();
    method public boolean isSupportedCharacter(int);
    method public boolean isValid();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.provider.SimPhonebookContract.SimRecords.NameValidationResult> CREATOR;
  }
  public class SyncStateContract {
    ctor public SyncStateContract();
  }
+18 −0
Original line number Diff line number Diff line
@@ -8289,6 +8289,24 @@ package android.provider {
    method @RequiresPermission(android.Manifest.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE) public static boolean putString(@NonNull android.content.ContentResolver, @NonNull String, @Nullable String, boolean);
  }
  public final class SimPhonebookContract {
    method @NonNull public static String getEfUriPath(int);
    field public static final String SUBSCRIPTION_ID_PATH_SEGMENT = "subid";
  }
  public static final class SimPhonebookContract.ElementaryFiles {
    field public static final String EF_ADN_PATH_SEGMENT = "adn";
    field public static final String EF_FDN_PATH_SEGMENT = "fdn";
    field public static final String EF_SDN_PATH_SEGMENT = "sdn";
    field public static final String ELEMENTARY_FILES_PATH_SEGMENT = "elementary_files";
  }
  public static final class SimPhonebookContract.SimRecords {
    field public static final String EXTRA_NAME_VALIDATION_RESULT = "android.provider.extra.NAME_VALIDATION_RESULT";
    field public static final String QUERY_ARG_PIN2 = "android:query-arg-pin2";
    field public static final String VALIDATE_NAME_PATH_SEGMENT = "validate_name";
  }
  public static final class Telephony.Carriers implements android.provider.BaseColumns {
    field public static final String APN_SET_ID = "apn_set_id";
    field public static final int CARRIER_EDITED = 4; // 0x4
+1 −0
Original line number Diff line number Diff line
per-file *BlockedNumber* = file:/telephony/OWNERS
per-file *Telephony* = file:/telephony/OWNERS
per-file *SimPhonebook* = file:/telephony/OWNERS

per-file *CallLog* = file:platform/packages/providers/ContactsProvider:/OWNERS
per-file *Contacts* = file:platform/packages/providers/ContactsProvider:/OWNERS
+506 −0

File added.

Preview size limit exceeded, changes collapsed.

+120 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.provider;

import static com.google.common.truth.Truth.assertThat;

import static org.testng.Assert.assertThrows;

import android.content.ContentValues;
import android.os.Parcel;
import android.provider.SimPhonebookContract.SimRecords.NameValidationResult;

import androidx.test.ext.junit.runners.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
public class SimPhonebookContractTest {

    @Test
    public void getContentUri_invalidEfType_throwsIllegalArgumentException() {
        assertThrows(IllegalArgumentException.class, () ->
                SimPhonebookContract.SimRecords.getContentUri(1, 100)
        );
        assertThrows(IllegalArgumentException.class, () ->
                SimPhonebookContract.SimRecords.getContentUri(1, -1)
        );
        assertThrows(IllegalArgumentException.class, () ->
                SimPhonebookContract.SimRecords.getContentUri(1,
                        SimPhonebookContract.ElementaryFiles.EF_UNKNOWN)
        );
    }

    @Test
    public void getItemUri_invalidEfType_throwsIllegalArgumentException() {
        assertThrows(IllegalArgumentException.class, () ->
                SimPhonebookContract.SimRecords.getItemUri(1, 100, 1)
        );
        assertThrows(IllegalArgumentException.class, () ->
                SimPhonebookContract.SimRecords.getItemUri(1, -1, 1)
        );
        assertThrows(IllegalArgumentException.class, () ->
                SimPhonebookContract.SimRecords.getItemUri(1,
                        SimPhonebookContract.ElementaryFiles.EF_UNKNOWN, 1)
        );
    }

    @Test
    public void getItemUri_invalidRecordIndex_throwsIllegalArgumentException() {
        assertThrows(IllegalArgumentException.class, () ->
                SimPhonebookContract.SimRecords.getItemUri(1,
                        SimPhonebookContract.ElementaryFiles.EF_ADN, 0)
        );
        assertThrows(IllegalArgumentException.class, () ->
                SimPhonebookContract.SimRecords.getItemUri(1,
                        SimPhonebookContract.ElementaryFiles.EF_ADN, -1)
        );
    }

    @Test
    public void nameValidationResult_isValid_validNames() {
        assertThat(new NameValidationResult("", "", 0, 1).isValid()).isTrue();
        assertThat(new NameValidationResult("a", "a", 1, 1).isValid()).isTrue();
        assertThat(new NameValidationResult("First Last", "First Last", 10, 10).isValid()).isTrue();
        assertThat(
                new NameValidationResult("First Last", "First Last", 10, 100).isValid()).isTrue();
    }

    @Test
    public void nameValidationResult_isValid_invalidNames() {
        assertThat(new NameValidationResult("", "", 0, 0).isValid()).isFalse();
        assertThat(new NameValidationResult("ab", "ab", 2, 1).isValid()).isFalse();
        NameValidationResult unsupportedCharactersResult = new NameValidationResult("A_b_c",
                "A b c", 5, 5);
        assertThat(unsupportedCharactersResult.isValid()).isFalse();
        assertThat(unsupportedCharactersResult.isSupportedCharacter(0)).isTrue();
        assertThat(unsupportedCharactersResult.isSupportedCharacter(1)).isFalse();
        assertThat(unsupportedCharactersResult.isSupportedCharacter(2)).isTrue();
        assertThat(unsupportedCharactersResult.isSupportedCharacter(3)).isFalse();
        assertThat(unsupportedCharactersResult.isSupportedCharacter(4)).isTrue();
    }

    @Test
    public void nameValidationResult_parcel() {
        ContentValues values = new ContentValues();
        values.put("name", "Name");
        values.put("phone_number", "123");

        NameValidationResult result;
        Parcel parcel = Parcel.obtain();
        try {
            parcel.writeParcelable(new NameValidationResult("name", "sanitized name", 1, 2), 0);
            parcel.setDataPosition(0);
            result = parcel.readParcelable(NameValidationResult.class.getClassLoader());
        } finally {
            parcel.recycle();
        }

        assertThat(result.getName()).isEqualTo("name");
        assertThat(result.getSanitizedName()).isEqualTo("sanitized name");
        assertThat(result.getEncodedLength()).isEqualTo(1);
        assertThat(result.getMaxEncodedLength()).isEqualTo(2);
    }
}