Reading value from DeviceConfig may fail if the provider is not ready.
Since DeciceConfig, and Settings class are static wrapper on top of
the provider, it won't cause the instance initialization issue.
Thus when the issue happens it means the provider is not initialized.
Test: atest aconfig.test.java and manually make a change in the
framework and check the exception message
Bug: 299471646
Change-Id: Ic08d7a9cd32a8810a7274b6d93c249abccb50b9e
This reverts commit c0e8ffea41.
Reason for revert: The detected build breakage was unrelated to the aconfig change. Details in b/297881670#comment11.
Change-Id: Ia32bc2e796ed3de7fa049c2c2db340f4325a2853
This reverts commit 379e09d157.
Reason for revert: Seems to have broken the build. Reverting while investigating.
Change-Id: I37c9a065853ef07b1f1c18355205a2f49dd816c4
Flagged APIs are annotated using `@FlaggedApi(Flags.FLAG_NAME)`, where
Flags.FLAG_NAME was auto-generated by aconfig.
When metalava generates an API signature file, it can either
a) insert the value of the constant ("com.foo.bar.flag_name"), or
b) insert the name of the constant (FLAG.NAME)
In the case of @FlaggedApi, we want a). This requires that
x) metlava has access to the definition of the constant while generating the API signature file, and
y) the constant is not part of the API surface of the API signature file
x) is handled by the build system, y) is handled by the aconfig code
generation.
This CL @hide:s all generated Java code, to make sure it is accessible
within the platform, but never part of any API surface.
Bug: 297881670
Test: atest aconfig.test aconfig.test.java
Change-Id: I328ed1a652a4e5e293f2f4b11f916d29fc2fbcbd
This change will generate full fakefeatureflagsimpl in prod mode.
FakeFeatureFlagsImp will be the same in test mode and the prod mode.
FeatureFlagsImpl will be all unimplemented in test mode. setFlag,
resetAll are added into the interface FeatureFlags.
The reason to make this change is for project using injection pattern,
the project doesn't have to use test mode to test the flag guarded code.
The project can directly use the FakeFeatureFlagsImpl for testing.
Bug: 294838180
Test: atest AconfigJavaHostTest --host AND atest aconfig.test.java
Change-Id: Ib6d40fd3a9ef872e01594fd4f8d6c4cb10bb173a
Add methods setFlag and resetAll in FeatureFlags in test mode. For the
injection usecase, user will use the interface FeatureFlags in the code
to control the flags.
Add tests for test mode.
Bug: 280833463
Test: Atest AconfigJavaHostTest --host
Change-Id: Ib59ba35a9011a6400af42fc9c283d37193577997
Before FeatureFlagsImpl will be used as a fake for testing. This change
adds new class FakeFeatureFlagsImpl. The FeatureFlagsImpl will keep the
same as production. FakeFeatureFlagsImpl can be used as fake for
testing.
FakeFeatureFlagsImpl, and FeatureFlagsImpl will be generated in both
test and prod mode. In test mode FeatureFlagsImpl will just be a stub,
and in prod mode FakeFeatureFlagsImpl will just be a stub.
Bug: 280833463
Test: atest aconfig.test
Change-Id: I11c1e716a9ea00d55600e5e9d5fb6442420762e6