[layout precompilation] Add testing hook for precompiled layouts

We want to be able to control at a fine grained level whether precompiled
layouts are enabled so we can compare inflation results with and without. This
changes adds a @TestApi method that supports this.

Bug: 111895153
Change-Id: Ib6b62d79a9ca7aefefff8639752aa5838e491038
This commit is contained in:
Eric Holk
2019-01-18 11:49:55 -08:00
parent 3e8a69cd9d
commit 25aa4edaa8
2 changed files with 24 additions and 3 deletions

View File

@@ -2366,6 +2366,10 @@ package android.view {
method public boolean isSystemGroup(); method public boolean isSystemGroup();
} }
public abstract class LayoutInflater {
method public void setPrecompiledLayoutsEnabledForTesting(boolean);
}
public final class MotionEvent extends android.view.InputEvent implements android.os.Parcelable { public final class MotionEvent extends android.view.InputEvent implements android.os.Parcelable {
method public void setActionButton(int); method public void setActionButton(int);
method public void setButtonState(int); method public void setButtonState(int);

View File

@@ -20,6 +20,7 @@ import android.annotation.LayoutRes;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
import android.annotation.SystemService; import android.annotation.SystemService;
import android.annotation.TestApi;
import android.annotation.UnsupportedAppUsage; import android.annotation.UnsupportedAppUsage;
import android.content.Context; import android.content.Context;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
@@ -399,10 +400,15 @@ public abstract class LayoutInflater {
} }
private void initPrecompiledViews() { private void initPrecompiledViews() {
// Check if precompiled layouts are enabled by a system property. initPrecompiledViews(
mUseCompiledView = SystemProperties.getBoolean(USE_PRECOMPILED_LAYOUT_SYSTEM_PROPERTY, false));
SystemProperties.getBoolean(USE_PRECOMPILED_LAYOUT_SYSTEM_PROPERTY, false); }
private void initPrecompiledViews(boolean enablePrecompiledViews) {
mUseCompiledView = enablePrecompiledViews;
if (!mUseCompiledView) { if (!mUseCompiledView) {
mPrecompiledClassLoader = null;
return; return;
} }
@@ -431,6 +437,17 @@ public abstract class LayoutInflater {
} }
mUseCompiledView = false; mUseCompiledView = false;
} }
if (!mUseCompiledView) {
mPrecompiledClassLoader = null;
}
}
/**
* @hide for use by CTS tests
*/
@TestApi
public void setPrecompiledLayoutsEnabledForTesting(boolean enablePrecompiledLayouts) {
initPrecompiledViews(enablePrecompiledLayouts);
} }
/** /**