Fixed
Status Update
Comments
ap...@google.com <ap...@google.com> #2
I realize this should be filed as a feature request
da...@google.com <da...@google.com>
na...@google.com <na...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-main
commit ed2450ec5d2cdf62f1ebf13a29fe04295ad65e44
Author: Anastasia Soboleva <soboleva@google.com>
Date: Thu Dec 30 19:22:41 2021
Add material decoration box for TextField and OutlinedTextField
It allows additionally to what is customisable in text fields already to customise paddings (incl. for dense text field support), border or indicator line.
In the future we could add prefix/suffix, helper message slots.
Fixes: 203764564
Fixes: 191543915
Fixes: 189971673
Fixes: 183136600
Fixes: 179882597
Fixes: 168003617
Test: TextFieldTest and OutlinedTextFieldTest
Test: new tests TextFieldDecorationBoxTest
Relnote: "Added TextFieldDecorationBox and
OutlinedTextFieldDecorationBox. Using them together with BasicTextField
will help you build custom text field based on Material Design text
fields but with more options for customisation."
Relnote: "Provided a way to adjust horizontal and vertical paddings in text fields."
Change-Id: I8c9f168a687e337670c266e1eb3e985da6aebdc3
M compose/material/material/samples/src/main/java/androidx/compose/material/samples/TextFieldSamples.kt
M compose/material/material/api/current.txt
M compose/material/material/api/restricted_current.txt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/TextFieldTest.kt
A compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/TextFieldDecorationBoxTest.kt
M compose/material/material/api/public_plus_experimental_current.txt
A compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/TextFieldDecorationBoxDemos.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/TextFieldDefaults.kt
M compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MaterialDemos.kt
M compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MaterialTextField.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/TextField.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/OutlinedTextField.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/TextFieldImpl.kt
https://android-review.googlesource.com/1934969
Branch: androidx-main
commit ed2450ec5d2cdf62f1ebf13a29fe04295ad65e44
Author: Anastasia Soboleva <soboleva@google.com>
Date: Thu Dec 30 19:22:41 2021
Add material decoration box for TextField and OutlinedTextField
It allows additionally to what is customisable in text fields already to customise paddings (incl. for dense text field support), border or indicator line.
In the future we could add prefix/suffix, helper message slots.
Fixes: 203764564
Fixes: 191543915
Fixes: 189971673
Fixes: 183136600
Fixes: 179882597
Fixes: 168003617
Test: TextFieldTest and OutlinedTextFieldTest
Test: new tests TextFieldDecorationBoxTest
Relnote: "Added TextFieldDecorationBox and
OutlinedTextFieldDecorationBox. Using them together with BasicTextField
will help you build custom text field based on Material Design text
fields but with more options for customisation."
Relnote: "Provided a way to adjust horizontal and vertical paddings in text fields."
Change-Id: I8c9f168a687e337670c266e1eb3e985da6aebdc3
M compose/material/material/samples/src/main/java/androidx/compose/material/samples/TextFieldSamples.kt
M compose/material/material/api/current.txt
M compose/material/material/api/restricted_current.txt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/TextFieldTest.kt
A compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/TextFieldDecorationBoxTest.kt
M compose/material/material/api/public_plus_experimental_current.txt
A compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/TextFieldDecorationBoxDemos.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/TextFieldDefaults.kt
M compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MaterialDemos.kt
M compose/material/material/integration-tests/material-demos/src/main/java/androidx/compose/material/demos/MaterialTextField.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/TextField.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/OutlinedTextField.kt
M compose/material/material/src/commonMain/kotlin/androidx/compose/material/TextFieldImpl.kt
Description
```
public void basicTest() throws Exception {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.M) {
throw new RuntimeException("API v23 or higher is required to run this test");
}
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(/* param= */ null);
final ArrayList<Exception> exceptions = new ArrayList<>();
Thread thread =
new Thread() {
@Override
public void run() {
try {
MasterKey masterKey =
new MasterKey.Builder(ApplicationProvider.getApplicationContext())
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build();
} catch (Exception e) {
synchronized (exceptions) {
exceptions.add(e);
}
}
}
};
// This starts a new thread that generates a new master key. I think that thread blocks until
// the new master key is finished.
thread.start();
// We now try to create another master key in this thread.
MasterKey masterKey =
new MasterKey.Builder(ApplicationProvider.getApplicationContext())
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build();
// This should be true, but it is sometimes false.
assertThat(keyStore.containsAlias("_androidx_security_master_key_")).isTrue();
// Wait for other thread to finish
thread.join();
if (exceptions.size() > 0) {
throw exceptions.get(0);
}
}
```
This is because of a non-atomic check and set in `MasterKeys.getOrCreate`.
Reported by juerg@google.com