Loading src/com/android/settings/deviceinfo/legal/ModuleLicenseProvider.java +8 −2 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ public class ModuleLicenseProvider extends ContentProvider { @Override public String getType(Uri uri) { checkUri(getContext(), uri); checkUri(getModuleContext(), uri); return LICENSE_FILE_MIME_TYPE; } Loading @@ -83,7 +83,7 @@ public class ModuleLicenseProvider extends ContentProvider { @Override public ParcelFileDescriptor openFile(Uri uri, String mode) { final Context context = getContext(); final Context context = getModuleContext(); checkUri(context, uri); Preconditions.checkArgument("r".equals(mode), "Read is the only supported mode"); Loading Loading @@ -191,4 +191,10 @@ public class ModuleLicenseProvider extends ContentProvider { private static SharedPreferences getPrefs(Context context) { return context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); } // Method to allow context injection for testing purposes. @VisibleForTesting protected Context getModuleContext() { return getContext(); } } tests/robotests/src/com/android/settings/deviceinfo/legal/ModuleLicenseProviderTest.java→tests/unit/src/com/android/settings/deviceinfo/legal/ModuleLicenseProviderTest.java +17 −19 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ * 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 * limitations under the License. */ package com.android.settings.deviceinfo.legal; Loading @@ -28,27 +28,23 @@ import static org.mockito.Mockito.when; import android.content.ContentResolver; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.ModuleInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.res.AssetFileDescriptor; import android.content.res.AssetManager; import android.content.res.Resources; import android.net.Uri; import android.os.ParcelFileDescriptor; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; @RunWith(RobolectricTestRunner.class) @RunWith(AndroidJUnit4.class) public class ModuleLicenseProviderTest { public static final String PACKAGE_NAME = "com.android.test_package"; @Test Loading Loading @@ -149,7 +145,7 @@ public class ModuleLicenseProviderTest { ModuleLicenseProvider provider = spy(new ModuleLicenseProvider()); Context context = mock(Context.class); PackageManager packageManager = mock(PackageManager.class); when(provider.getContext()).thenReturn(context); when(provider.getModuleContext()).thenReturn(context); when(context.getPackageManager()).thenReturn(packageManager); when(packageManager.getModuleInfo(PACKAGE_NAME, 0)) .thenThrow(new PackageManager.NameNotFoundException()); Loading @@ -168,7 +164,7 @@ public class ModuleLicenseProviderTest { ModuleLicenseProvider provider = spy(new ModuleLicenseProvider()); Context context = mock(Context.class); PackageManager packageManager = mock(PackageManager.class); when(provider.getContext()).thenReturn(context); when(provider.getModuleContext()).thenReturn(context); when(context.getPackageManager()).thenReturn(packageManager); when(packageManager.getModuleInfo(PACKAGE_NAME, 0)) .thenReturn(new ModuleInfo()); Loading Loading @@ -249,7 +245,7 @@ public class ModuleLicenseProviderTest { ModuleLicenseProvider provider = spy(new ModuleLicenseProvider()); Context context = mock(Context.class); PackageManager packageManager = mock(PackageManager.class); when(provider.getContext()).thenReturn(context); when(provider.getModuleContext()).thenReturn(context); when(context.getPackageManager()).thenReturn(packageManager); when(packageManager.getModuleInfo(PACKAGE_NAME, 0)) .thenThrow(new PackageManager.NameNotFoundException()); Loading @@ -268,7 +264,7 @@ public class ModuleLicenseProviderTest { ModuleLicenseProvider provider = spy(new ModuleLicenseProvider()); Context context = mock(Context.class); PackageManager packageManager = mock(PackageManager.class); when(provider.getContext()).thenReturn(context); when(provider.getModuleContext()).thenReturn(context); when(context.getPackageManager()).thenReturn(packageManager); when(packageManager.getModuleInfo(PACKAGE_NAME, 0)) .thenReturn(new ModuleInfo()); Loading @@ -284,7 +280,7 @@ public class ModuleLicenseProviderTest { @Test public void isCachedHtmlFileOutdated_packageNotInSharedPrefs_returnTrue() throws PackageManager.NameNotFoundException { Context context = RuntimeEnvironment.application; Context context = ApplicationProvider.getApplicationContext(); context.getSharedPreferences(ModuleLicenseProvider.PREFS_NAME, Context.MODE_PRIVATE) .edit().clear().commit(); Loading @@ -294,7 +290,7 @@ public class ModuleLicenseProviderTest { @Test public void isCachedHtmlFileOutdated_versionCodeDiffersFromSharedPref_returnTrue() throws PackageManager.NameNotFoundException { Context context = spy(RuntimeEnvironment.application); Context context = spy(ApplicationProvider.getApplicationContext()); SharedPreferences.Editor editor = context.getSharedPreferences( ModuleLicenseProvider.PREFS_NAME, Context.MODE_PRIVATE) .edit(); Loading @@ -313,7 +309,7 @@ public class ModuleLicenseProviderTest { @Test public void isCachedHtmlFileOutdated_fileDoesNotExist_returnTrue() throws PackageManager.NameNotFoundException { Context context = spy(RuntimeEnvironment.application); Context context = spy(ApplicationProvider.getApplicationContext()); context.getSharedPreferences(ModuleLicenseProvider.PREFS_NAME, Context.MODE_PRIVATE) .edit().clear().commit(); SharedPreferences.Editor editor = context.getSharedPreferences( Loading @@ -335,7 +331,7 @@ public class ModuleLicenseProviderTest { @Test public void isCachedHtmlFileOutdated_fileIsEmpty_returnTrue() throws PackageManager.NameNotFoundException, IOException { Context context = spy(RuntimeEnvironment.application); Context context = spy(ApplicationProvider.getApplicationContext()); context.getSharedPreferences(ModuleLicenseProvider.PREFS_NAME, Context.MODE_PRIVATE) .edit().clear().commit(); SharedPreferences.Editor editor = context.getSharedPreferences( Loading @@ -360,7 +356,7 @@ public class ModuleLicenseProviderTest { @Test public void isCachedHtmlFileOutdated_notOutdated_returnFalse() throws PackageManager.NameNotFoundException, IOException { Context context = spy(RuntimeEnvironment.application); Context context = spy(ApplicationProvider.getApplicationContext()); context.getSharedPreferences(ModuleLicenseProvider.PREFS_NAME, Context.MODE_PRIVATE) .edit().clear().commit(); SharedPreferences.Editor editor = context.getSharedPreferences( Loading Loading @@ -388,6 +384,8 @@ public class ModuleLicenseProviderTest { @Test public void getUriForPackage_returnsProperlyFormattedUri() { assertThat(ModuleLicenseProvider.getUriForPackage(PACKAGE_NAME)) .isEqualTo(Uri.parse("content://com.android.settings.module_licenses/com.android.test_package/NOTICE.html")); .isEqualTo(Uri.parse( "content://com.android.settings.module_licenses/" + "com.android.test_package/NOTICE.html")); } } Loading
src/com/android/settings/deviceinfo/legal/ModuleLicenseProvider.java +8 −2 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ public class ModuleLicenseProvider extends ContentProvider { @Override public String getType(Uri uri) { checkUri(getContext(), uri); checkUri(getModuleContext(), uri); return LICENSE_FILE_MIME_TYPE; } Loading @@ -83,7 +83,7 @@ public class ModuleLicenseProvider extends ContentProvider { @Override public ParcelFileDescriptor openFile(Uri uri, String mode) { final Context context = getContext(); final Context context = getModuleContext(); checkUri(context, uri); Preconditions.checkArgument("r".equals(mode), "Read is the only supported mode"); Loading Loading @@ -191,4 +191,10 @@ public class ModuleLicenseProvider extends ContentProvider { private static SharedPreferences getPrefs(Context context) { return context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); } // Method to allow context injection for testing purposes. @VisibleForTesting protected Context getModuleContext() { return getContext(); } }
tests/robotests/src/com/android/settings/deviceinfo/legal/ModuleLicenseProviderTest.java→tests/unit/src/com/android/settings/deviceinfo/legal/ModuleLicenseProviderTest.java +17 −19 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ * 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 * limitations under the License. */ package com.android.settings.deviceinfo.legal; Loading @@ -28,27 +28,23 @@ import static org.mockito.Mockito.when; import android.content.ContentResolver; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.ModuleInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.res.AssetFileDescriptor; import android.content.res.AssetManager; import android.content.res.Resources; import android.net.Uri; import android.os.ParcelFileDescriptor; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; @RunWith(RobolectricTestRunner.class) @RunWith(AndroidJUnit4.class) public class ModuleLicenseProviderTest { public static final String PACKAGE_NAME = "com.android.test_package"; @Test Loading Loading @@ -149,7 +145,7 @@ public class ModuleLicenseProviderTest { ModuleLicenseProvider provider = spy(new ModuleLicenseProvider()); Context context = mock(Context.class); PackageManager packageManager = mock(PackageManager.class); when(provider.getContext()).thenReturn(context); when(provider.getModuleContext()).thenReturn(context); when(context.getPackageManager()).thenReturn(packageManager); when(packageManager.getModuleInfo(PACKAGE_NAME, 0)) .thenThrow(new PackageManager.NameNotFoundException()); Loading @@ -168,7 +164,7 @@ public class ModuleLicenseProviderTest { ModuleLicenseProvider provider = spy(new ModuleLicenseProvider()); Context context = mock(Context.class); PackageManager packageManager = mock(PackageManager.class); when(provider.getContext()).thenReturn(context); when(provider.getModuleContext()).thenReturn(context); when(context.getPackageManager()).thenReturn(packageManager); when(packageManager.getModuleInfo(PACKAGE_NAME, 0)) .thenReturn(new ModuleInfo()); Loading Loading @@ -249,7 +245,7 @@ public class ModuleLicenseProviderTest { ModuleLicenseProvider provider = spy(new ModuleLicenseProvider()); Context context = mock(Context.class); PackageManager packageManager = mock(PackageManager.class); when(provider.getContext()).thenReturn(context); when(provider.getModuleContext()).thenReturn(context); when(context.getPackageManager()).thenReturn(packageManager); when(packageManager.getModuleInfo(PACKAGE_NAME, 0)) .thenThrow(new PackageManager.NameNotFoundException()); Loading @@ -268,7 +264,7 @@ public class ModuleLicenseProviderTest { ModuleLicenseProvider provider = spy(new ModuleLicenseProvider()); Context context = mock(Context.class); PackageManager packageManager = mock(PackageManager.class); when(provider.getContext()).thenReturn(context); when(provider.getModuleContext()).thenReturn(context); when(context.getPackageManager()).thenReturn(packageManager); when(packageManager.getModuleInfo(PACKAGE_NAME, 0)) .thenReturn(new ModuleInfo()); Loading @@ -284,7 +280,7 @@ public class ModuleLicenseProviderTest { @Test public void isCachedHtmlFileOutdated_packageNotInSharedPrefs_returnTrue() throws PackageManager.NameNotFoundException { Context context = RuntimeEnvironment.application; Context context = ApplicationProvider.getApplicationContext(); context.getSharedPreferences(ModuleLicenseProvider.PREFS_NAME, Context.MODE_PRIVATE) .edit().clear().commit(); Loading @@ -294,7 +290,7 @@ public class ModuleLicenseProviderTest { @Test public void isCachedHtmlFileOutdated_versionCodeDiffersFromSharedPref_returnTrue() throws PackageManager.NameNotFoundException { Context context = spy(RuntimeEnvironment.application); Context context = spy(ApplicationProvider.getApplicationContext()); SharedPreferences.Editor editor = context.getSharedPreferences( ModuleLicenseProvider.PREFS_NAME, Context.MODE_PRIVATE) .edit(); Loading @@ -313,7 +309,7 @@ public class ModuleLicenseProviderTest { @Test public void isCachedHtmlFileOutdated_fileDoesNotExist_returnTrue() throws PackageManager.NameNotFoundException { Context context = spy(RuntimeEnvironment.application); Context context = spy(ApplicationProvider.getApplicationContext()); context.getSharedPreferences(ModuleLicenseProvider.PREFS_NAME, Context.MODE_PRIVATE) .edit().clear().commit(); SharedPreferences.Editor editor = context.getSharedPreferences( Loading @@ -335,7 +331,7 @@ public class ModuleLicenseProviderTest { @Test public void isCachedHtmlFileOutdated_fileIsEmpty_returnTrue() throws PackageManager.NameNotFoundException, IOException { Context context = spy(RuntimeEnvironment.application); Context context = spy(ApplicationProvider.getApplicationContext()); context.getSharedPreferences(ModuleLicenseProvider.PREFS_NAME, Context.MODE_PRIVATE) .edit().clear().commit(); SharedPreferences.Editor editor = context.getSharedPreferences( Loading @@ -360,7 +356,7 @@ public class ModuleLicenseProviderTest { @Test public void isCachedHtmlFileOutdated_notOutdated_returnFalse() throws PackageManager.NameNotFoundException, IOException { Context context = spy(RuntimeEnvironment.application); Context context = spy(ApplicationProvider.getApplicationContext()); context.getSharedPreferences(ModuleLicenseProvider.PREFS_NAME, Context.MODE_PRIVATE) .edit().clear().commit(); SharedPreferences.Editor editor = context.getSharedPreferences( Loading Loading @@ -388,6 +384,8 @@ public class ModuleLicenseProviderTest { @Test public void getUriForPackage_returnsProperlyFormattedUri() { assertThat(ModuleLicenseProvider.getUriForPackage(PACKAGE_NAME)) .isEqualTo(Uri.parse("content://com.android.settings.module_licenses/com.android.test_package/NOTICE.html")); .isEqualTo(Uri.parse( "content://com.android.settings.module_licenses/" + "com.android.test_package/NOTICE.html")); } }